2017-01-26 1 views
0

Это мой код для получения изображения из базы данных sql в C#. я хочу, чтобы установить изображение в PictureBox, но им получать «System.Drawing.dll параметр не является действительным»Настройка изображения в окне изображения из sql datbase

byte[] getImg; 
    SqlConnection con2 = new SqlConnection(conString); 
       con2.Open(); 
       if (con2.State == System.Data.ConnectionState.Open) 
       { 
        string sss = "SELECT student_photo from student_reg where reg_year='" + year + "'and s_id='" +sid_lbl.Text+ "'"; 
        SqlCommand cmd = new SqlCommand(sss, con2); 
        Console.WriteLine(sss); 
        SqlDataReader dr4 = cmd.ExecuteReader(); 

        while (dr4.Read()) 
        { 



         getImg = (byte[])(dr4["student_photo"]); 






        } 
        MemoryStream stream = new MemoryStream(getImg); 
        picturebox1.Image = Image.FromStream(stream); 
    } 
    con2.Close() 

ответ

0

Это трудно точно определить, где ваша проблема может быть, но попробовать пару изменений:

  1. Используйте параметры вместо жесткого кодирования. В вашем примере одиночные кавычки подразумевали, что id и reg_year были обеими строками. Если это не так, вы хотите использовать сильные типы данных для своих значений параметров (конвертировать в Int32 или что-либо, что соответствует вашей базе данных). Можете ли вы подключить DDL для таблицы?

  2. Если у вас есть один ряд/один столбец, рассмотрите ExecuteScalar.

Если это не работает, я думаю, что это на самом деле не файл изображения в student_photo поле.

Код:

SqlConnection con2 = new SqlConnection(conString); 
con2.Open(); 

if (con2.State == System.Data.ConnectionState.Open) 
{ 
    string sss = "SELECT student_photo from student_reg where [email protected] and [email protected]"; 
    SqlCommand cmd = new SqlCommand(sss, con2); 
    cmd.Parameters.AddWithValue("@YEAR", year); 
    cmd.Parameters.AddWithValue("@ID", sid_lbl.Text); 

    Byte[] getImg = (Byte[])cmd.ExecuteScalar(); 
    MemoryStream stream = new MemoryStream(getImg); 
    Image img = Image.FromStream(stream); 

    picturebox1.Image = img; 
} 
con2.Close() 
+0

нету я жёстко его –

0

Проверьте следующий код:

string stuImg = string.Empty;  
     SqlConnection con2 = new SqlConnection(conString); 
      con2.Open(); 
      if (con2.State == System.Data.ConnectionState.Open) 
      { 
       string sss = "SELECT student_photo from student_reg where reg_year='" + year + "'and s_id='" +sid_lbl.Text+ "'"; 
       SqlCommand cmd = new SqlCommand(sss, con2); 
       Console.WriteLine(sss); 
       SqlDataReader dr4 = cmd.ExecuteReader(); 
       while (dr4.Read()) 
       { 
        stuImg =dr4["student_photo"].ToString(); 
       } 
       var pic = Convert.FromBase64String(stuImg); 
       using (MemoryStream ms = new MemoryStream(pic)) 
        { 
        picturebox1.Image = Image.FromStream(ms); 
        } 
       } 
+0

System.FormatException 'в mscorlib.dll им получать –

+0

Необработанное исключение типа' System.ArgumentException 'произошел в System.Drawing.dll Дополнительная информация: Параметр недействителен. –