正在将图像从数据库加载到面板中
本文关键字:加载 数据库 图像 | 更新日期: 2023-09-27 18:29:50
我的应用程序将图像数据保存在数据库中,当将信息加载到表单中时,它将图像加载到面板中。这很好用。但若用户不想保存图像,我已经在数据库的图像字段(varbinary)中插入了"0"。从数据库加载此信息(0x00000000)时,会引发以下异常:
"参数无效。"
这里我给出了一些代码:
正在数据库中保存图像:
if(user has selected an image)
{
Byte[] imageBytes = File.ReadAllBytes(imagePatient);
sqlCommand.Parameters.AddWithValue("Img", imageBytes); //Img is database column for images
}
else
{
sqlCommand.Parameters.AddWithValue("Img", 0);
}
从数据库加载图像:
Byte[] imageData = new Byte[0];
imageData = (Byte[])(dataSet.Tables["Patients"].Rows[0]["Img"]);
MemoryStream stream = new MemoryStream(imageData);
panelImage.BackgroundImage = Image.FromStream(stream);
我试着做了一些检查,当数据不是零形式时,才允许加载BackgroundImage
请告诉我如何解决这个问题?
我将存储NULL
而不是0
。
if(user has selected an image)
{
Byte[] imageBytes = File.ReadAllBytes(imagePatient);
sqlCommand.Parameters.AddWithValue("Img", imageBytes); //Img is database column for images
}
else
{
sqlCommand.Parameters.Add("Img", SqlDbType.VarBinary, -1 );
sqlCommand.Parameters["Img"].Value = DbNull.Value;
}
然后使用if
语句检查它是否为非空:
Byte[] imageData = new Byte[0];
imageData = (Byte[])(dataSet.Tables["Patients"].Rows[0]["Img"]);
if(imageData != null)
{
MemoryStream stream = new MemoryStream(imageData);
panelImage.BackgroundImage = Image.FromStream(stream);
}
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparametercollection.addwithvalue.aspx