c# - System.DBNull 错误

标签 c#

我该如何解决这个问题?为什么图像文件会出现 system.dbnull 错误?

    private void Form1_Load(object sender, EventArgs e)
    {
        SqlDataAdapter da = new SqlDataAdapter("select * from Categories", baglantiYolu);
        DataTable tablo = new DataTable();
        da.Fill(tablo);
        foreach (DataRow kategori in tablo.Rows)
        {
            Kategori k = new Kategori();
            k.KategoriID = int.Parse(kategori["CategoryID"].ToString());
            k.KategoriAdı = kategori["CategoryName"].ToString();
            k.UrunSayisi = UrunSayisiniGetir(int.Parse(kategori["CategoryID"].ToString()));
            k.Aciklama = kategori["Description"].ToString();
            k.Resim = (byte[])kategori["Picture"];
            listBoxKategoriler.Items.Add(k);
        }
    }

enter image description here

最佳答案

如果该列的数据库返回值为 NULL,则在代码中转换为 DBNull.Value

您需要对此进行检查,因为它不会成功转换为 byte[]。像这样:

object val = row["Pictire"];

if (val == DBNull.Value || val == null)
{
    k.Resim = new byte[0];
}
else
{
    k.Resim = (byte[])val;
}

您需要对所有可能为空的列进行类似的检查。

关于c# - System.DBNull 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11451247/

相关文章:

c# - 返回 SqlDataReader

c# - 使用 WebApi [路由] 属性时 FluentValidation 不起作用

c# - 从字符串中删除字符的最快方法

javascript - 从按钮单击调用函数 MVC

c# - 在 URL 或 Session 或其他中存储语言

c# - VSTO Outlook 2013 加载项 : is it possible to connect to a RESTful web-api?

c# - 如何排除数组的值?

c# - 如何在没有 SecurityException 的 Silverlight View 模型中为此方法编写单元测试?

c# - DataGridView 使用 SortableBindingList

c# - 在命令 shell 中退出 WPF 应用程序