这个错误是因为查询结果中的'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,也不会导致类型转换错误。

C# TreeView AfterSelect 事件处理:读取数据库数据并显示图片

原文地址: https://www.cveoy.top/t/topic/qgWa 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录