2016-02-15 2 views
1

Я пытаюсь получить изображение из базы данных и отобразить в окне изображения. Мой код нижеОшибка загрузки изображения в окно с базой данных mysql. NullReferenceException

private void getImage() 
{ 
    using (MySqlConnection conn = new MySqlConnection(connectionManager.connectionString)) 
    { 
     try 
     { 
      conn.Open(); 

      string query = "SELECT 'Image' FROM student_img WHERE ID = @ID"; 

      MySqlCommand cmd = new MySqlCommand(query, conn); 

      int id = 10; 
      cmd.Parameters.AddWithValue("@ID", id); 

      var da = new MySqlDataAdapter(cmd); 
      var ds = new DataSet(); 
      da.Fill(ds, "Image"); 
      int count = ds.Tables["Images"].Rows.Count; 

      if (count > 0) 
      { 
       var data = (Byte[])(ds.Tables["Images"].Rows[count - 1]["Image"]); 
       var stream = new MemoryStream(data); 
       picLogo.Image = Image.FromStream(stream); 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Connection Error!\n" + ex.Message, "Error Message", 
        MessageBoxButtons.OK, MessageBoxIcon.Error); 
     } 
    } 

} 

Но я получаю ошибку NullReferenceException. У меня также есть еще один метод, возможно, я могу использовать это как-то, но я не знаю, как я могу получить данные из базы данных, как я новичок в C#

public Image byteArrayToImage(byte[] byteArrayIn) 
{ 
    MemoryStream ms = new MemoryStream(byteArrayIn); 
    Image returnImage = Image.FromStream(ms); 
    return returnImage; 
} 
+1

'Но я получаю ошибку NullReferenceException'. На какой линии? –

+0

Почему вы храните изображение в базе данных? Базы данных не должны хранить файлы. Вы должны сохранить ссылку или ссылку на изображение в базе данных, а затем потянуть изображение с файлового сервера или веб-адреса на основе этой ссылки. – Necoras

+1

вы заполняете таблицу с именем «Изображение», затем ссылаетесь на «Изображения». вам не нужен dataadpter и dataset и datatable для чтения одного поля из БД. несколько вещей, которые необходимо убрать – Plutonix

ответ

1

Успел решить эту проблему, пришлось изменить

изображения

к

изображение

private void getImage() 
     { 
      using (MySqlConnection conn = new MySqlConnection(connectionManager.connectionString)) 
      { 
       try 
       { 
        conn.Open(); 

        string query = "SELECT Image FROM student_img WHERE ID = @ID"; 

        MySqlCommand cmd = new MySqlCommand(query, conn); 

        int id = 10; 
        cmd.Parameters.AddWithValue("@ID", id); 

        var da = new MySqlDataAdapter(cmd); 
        var ds = new DataSet(); 
        da.Fill(ds, "Image"); 
        int count = ds.Tables["Image"].Rows.Count; 

        if (count > 0) 
        { 
         var data = (Byte[])(ds.Tables["Image"].Rows[count - 1]["Image"]); 
         var stream = new MemoryStream(data); 
         picLogo.Image = Image.FromStream(stream); 
        } 

       } 
       catch (Exception ex) 
       { 
        MessageBox.Show("Connection Error!\n" + ex.Message, "Error Message", 
          MessageBoxButtons.OK, MessageBoxIcon.Error); 
       } 
      } 

     }