0

我正在尝试从 SQL Server 数据库中读取图像,但出现错误:

参数无效

谁能帮我?如何解决?

byte[] im = connection.ReadImg(id);

if (im != null)
{
   MemoryStream st1 = new MemoryStream(im);
   pictureBox1.Image = Image.FromStream(st1);
}
else
   pictureBox1.Image = Image.FromFile(fn);

public byte[] ReadImg(string id)
{
    cmd.Connection = con;
    cmd.CommandText = "SELECT photo FROM User WHERE id=" + id;
    byte[] image = null;

    con.Open();

    try
    {
       image = (byte[])cmd.ExecuteScalar();
    }
    catch
    {
       image = null;
    }

    con.Close();

    return image;
}
4

2 回答 2

2

如果id是字符串,则必须将其作为字符串传递:

cmd.CommandText = "SELECT photo FROM User WHERE id=@id";
cmd.Parameters.AddWithValue("@id", id);

如果不使用推荐的参数方式,问题是您需要将字符串参数括在单引号中:

cmd.CommandText = "SELECT photo FROM User WHERE id='" + id + "'";

这被认为是不好的做法。

于 2012-04-22T17:59:09.753 回答
-1

SELECT语句不返回标量;您需要使用ExecuteReader或类似的;

SqlDataReader reader = cmd.ExecuteReader();
using(reader)
{
    while(reader.Read())
    {
        // Do something with reader["photo"].
    }
}

为了提供更多,我们需要 和 的数据id类型photo

于 2012-04-29T00:31:53.920 回答