我正在尝试从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;
}
答案 0 :(得分: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 + "'";
这被认为是不好的做法。
答案 1 :(得分:-1)
SELECT
语句不返回标量;你需要使用ExecuteReader
或类似的东西;
SqlDataReader reader = cmd.ExecuteReader();
using(reader)
{
while(reader.Read())
{
// Do something with reader["photo"].
}
}
为了提供更多信息,我们需要id
和photo
的数据类型。