Как мне сохранить изображение BLOB в базе данных доступа после получения имени из openfiledialog? - PullRequest
0 голосов
/ 16 сентября 2010

Я занимаюсь разработкой приложения на C # с базой данных Access. То, что я хочу сделать, это позволить пользователю выбрать изображение через «openfiledialog». Затем я хочу сохранить изображение в одной из таблиц базы данных доступа в поле BLOB. Я искал по интернету, но ничего полезного не нашел. Я надеюсь, что вы можете мне помочь.

if (openFileDialog1.ShowDialog() == DialogResult.OK)
{

     // textBox1.Show(openFileDialog1.FileName.ToString());
     // MessageBox.Show(openFileDialog1.FileName.ToString());
     textBox1.Text = openFileDialog1.FileName.ToString();

     String filename = openFileDialog1.FileName.ToString();
     byte[] buffer = File.ReadAllBytes(filename);

     using (var conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Policias.accdb"))

     using (var cmd = conn.CreateCommand())
     {                 
        cmd.CommandText = "INSERT INTO DetallesMunicipio(imagen) VALUES (@imagen)";
        cmd.Parameters.AddWithValue("@imagen", buffer);
        conn.Open();
        cmd.ExecuteNonQuery();

     }
     }
     else
     {
         MessageBox.Show("Porfavor selecciona una imagen");

     }

}

а теперь как я могу быть уверен, что он хранится в базе данных доступа?

Ответы [ 3 ]

2 голосов
/ 16 сентября 2010

Пример:

string filename = "foo.txt"; // TODO: fetch from file dialog
byte[] buffer = File.ReadAllBytes(filename);

using (var conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=foo.mdb"))
using (var cmd = conn.CreateCommand())
{
    cmd.CommandText = "INSERT INTO MyTable VALUES (@Name, @Data)";
    cmd.Parameters.AddWithValue("@Name", filename);
    cmd.Parameters.AddWithValue("@Data", buffer);
    cmd.ExecuteNonQuery();
}
0 голосов
/ 16 сентября 2010

Я бы использовал File.ReeadAllBytes (файл) и сохранил байт [] в БД.

0 голосов
/ 16 сентября 2010

То, что вы хотите сделать, похоже на следующее.

using (OpenFileDialog fileDialog = new OpenFileDialog){
   if(fileDialog.ShowDialog == DialogResult.OK){
       using (System.IO.FileInfo fileToSave = new System.IO.FileInfo(fileDialog.FilePath)){
          MemoryStream ms = System.IO.FileStream(fileToSave.FullNae, IO.FileMode.Open);
           //Here you can copy the ms over to a byte array to save into your blob in your database.
       }

   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...