数据集 - 处理空异常

本文关键字:异常 处理 数据集 | 更新日期: 2023-09-27 18:30:33

你好,我有这段代码,但现在我想处理 DBnull 异常,但到目前为止我发现数据集不包含 != 操作数。

有人可以帮助我解决此空异常吗?

提前致谢

SqlDataAdapter dataAdapter = new SqlDataAdapter(new SqlCommand(
    "SELECT logo FROM firma WHERE id = 1", spojeni));
DataSet dataSet = new DataSet();
dataAdapter.Fill(dataSet);
if (dataSet != DBNull.Value)
{
    if (dataSet.Tables[0].Rows.Count == 1)
    {
        Byte[] data = new Byte[0];
        data = (Byte[])(dataSet.Tables[0].Rows[0]["logo"]);
        MemoryStream mem = new MemoryStream(data);
        pictureBox1.Image = Image.FromStream(mem);
    }
}

数据集 - 处理空异常

不需要检查DataSet DbNull,因为它永远不可能。

if (dataSet != DBNull.Value)//Not required

然后使用IsNull DataRow方法检查空值。

为了使您的代码更加安全和清晰,我将把它写下来如下

if (dataSet.Tables.Count > 0 && dataSet.Tables[0].Rows.Count > 0)
{
    Datarow row = dataSet.Tables[0].Rows[0];
    if(!row.IsNull("logo"))
    {
        Byte[] data = (Byte[])row["logo"];
        MemoryStream mem = new MemoryStream(data);
        pictureBox1.Image = Image.FromStream(mem);
    }
    else
    {
        //logo is null
    }
}
数据集

从来都不是DBNull。但是,数据集中的值可以是 DBNull。您应该改为在值上检查 DBNull:

    dataAdapter.Fill(dataSet);
    if (dataSet.Tables[0].Rows.Count == 1)
    {
        Byte[] data = new Byte[0];
        object o = dataSet.Tables[0].Rows[0]["logo"]
        if (! DBNull.Value.Equals(o)) {
            data = (Byte[])();
            MemoryStream mem = new MemoryStream(data);
            pictureBox1.Image = Image.FromStream(mem);
        } else {
            throw new NoLogoImageFoundException("Please remember to upload the logo");
        }
    }

有关DBNull的更多信息,请参阅 http://msdn.microsoft.com/en-us/library/system.dbnull.value.aspx。

if (dataSet.Tables[0].Rows[0]["logo"].ToString()!= null )
    {
        Byte[] data = new Byte[0];
        data = (Byte[])(dataSet.Tables[0].Rows[0]["logo"]);
        MemoryStream mem = new MemoryStream(data);
        pictureBox1.Image = Image.FromStream(mem);
    }