从sql server数据库中检索图像错误

时间:2013-07-25 10:52:43

标签: c# sql

我将图像存储在名为test contains(id,name,image)的表上的数据库中,但是当我尝试使用此代码检索图像时:

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

1 个答案:

答案 0 :(得分:0)

HasRows只确定是否有行。您还需要Read()让读者前进。

这样的事情应该有用(假设你只想要一行)。

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

还要确保参数化您的SQL选择 - 目前它易受SQL注入攻击,以及MemoryStreamDataReader

之类的Dispose