DataSet - 处理Null异常

时间:2013-09-08 20:25:24

标签: c# sql sql-server winforms

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

有人可以帮我解决这个空例外吗?

提前致谢

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);
    }
}

3 个答案:

答案 0 :(得分:1)

DataSet绝不是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

答案 1 :(得分:1)

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

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

然后使用IsNull的{​​{1}}方法检查null。

为了使您的代码更加安全和清晰,我会将其写下来,如下所示

DataRow

答案 2 :(得分:0)

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);
    }