2017-01-26 8 views
0

이것은 C#의 SQL 데이터베이스에서 이미지를 검색하는 코드입니다. 내가의 PictureBox에 이미지를 설정하고 싶지만 메신저 그것은 당신의 문제가있을 경우 정확히하지만, 변화의 몇 가지 시도하기 어렵다그림 상자에서 이미지 데이터베이스에서 검색 설정

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

"는 System.Drawing.dll 매개 변수가 유효하지 않습니다"점점 :

  1. 하드 코딩 대신 매개 변수를 사용하십시오. 귀하의 예제에서 작은 따옴표는 idreg_year이 둘 다 문자열임을 암시합니다. 그렇지 않은 경우 매개 변수 값을 강력하게 데이터 유형을 지정해야합니다 (Int32로 변환하거나 데이터베이스와 일치하는 항목으로 변환). 테이블에 DDL을 첨부 할 수 있습니까?

  2. 출력이 1 행/1 열인 경우 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

를 받고'을 코딩 havent 한 System.ArgumentException 'System.Drawing.dll에서 발생했습니다. 추가 정보 : 매개 변수가 유효하지 않습니다. –