C# TreeView AfterSelect 事件处理:读取数据库数据并显示图片
这个错误是因为查询结果中的'sop_image'字段值为 NULL,而你尝试将其转换为 byte[] 类型,而 NULL 无法转换为 byte[] 类型。解决方法是在读取字段值之前先检查字段值是否为 NULL。
可以修改代码如下:
if (reader.Read())
{
// 读取查询结果的字段值
string prd_cat = reader.GetString(0);
string prd_name = reader.GetString(1);
string file_no = reader.GetString(2);
string ver = reader.GetString(3);
string sop_name = reader.GetString(4);
string sop_date = reader.GetDateTime(5).ToString();
string sop_page = reader.GetString(7);
// 将字段值赋给文本框
cbx_p_cat.Text = prd_cat;
tbx_p_name.Text = prd_name;
tbx_f_no.Text = file_no;
tbx_s_ver.Text = ver;
tbx_s_name.Text = sop_name;
dtp_sop.Value = Convert.ToDateTime(sop_date);
tbx_s_page.Text = sop_page;
// 检查'sop_image'字段值是否为 NULL
if (!reader.IsDBNull(6))
{
// 读取并显示图片
byte[] imageBytes = (byte[])reader["sop_image"];
MemoryStream ms = new MemoryStream(imageBytes);
sop_image.Image = System.Drawing.Image.FromStream(ms);
}
else
{
// 如果字段值为 NULL,可以设置默认图片或者清空图片框
sop_image.Image = null; // 清空图片框
//sop_image.Image = Properties.Resources.DefaultImage; // 设置默认图片
}
}
这样修改后,即使'sop_image'字段的值为 NULL,也不会导致类型转换错误。
原文地址: https://www.cveoy.top/t/topic/qgWa 著作权归作者所有。请勿转载和采集!