2013-07-25 161 views
0

我存儲上的表稱爲測試包含(ID,姓名,圖像)圖像數據庫中的圖像,但是當我試圖通過使用此代碼檢索圖片:從SQL Server檢索數據庫錯誤

SqlConnection CN = new SqlConnection(constring); 
SqlCommand cmd = new SqlCommand("select * from test where id ='"+txtid.Text+"'", CN); 
SqlDataReader myreader; 
try 
{ 
    CN.Open(); 

    myreader = cmd.ExecuteReader(); 
    if (myreader.HasRows) 
    { 
     txtid.Text = myreader[0].ToString(); 
     txtname.Text = myreader[1].ToString(); 
     byte[] img = (byte[])(myreader[2]); 
     if (img == null) 
      pictureBox1.Image = null; 
     else 
     { 
      MemoryStream ms = new MemoryStream(img); 
      pictureBox1.Image = Image.FromStream(ms); 
     } 
    } 
    else 
    { 
     MessageBox.Show("do not found"); 
    } 

    CN.Close(); 
} 
catch (Exception ex) 
{ MessageBox.Show(ex.Message); } 

我有這個錯誤:invalid attempt to read when no data is present

回答

0

HasRows只是確定是否有行。您還需要Read()才能讓讀者前進。

像這樣的東西應該工作(假設你只想要一行)。

myreader = cmd.ExecuteReader(); 
if (myreader.Read()) 
{ 
... 

還要確保您的參數選擇SQL - 此刻卻是容易受到SQL注入攻擊,並Dispose事物的MemoryStreamDataReader

+0

非常感謝StuartLC等。 – user2536447

+0

可以告訴我如何更新存儲的數據 – user2536447