0

您好,我有这段代码,但现在我想处理 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);
    }
}
4

3 回答 3

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

于 2013-09-08T20:32:00.850 回答
1

检查DataSet DbNull不是必需的,因为它永远不可能。

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

然后使用IsNull方法DataRow来检查null。

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

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
    }
}
于 2013-09-08T20:49:46.713 回答
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);
    }
于 2013-09-09T02:16:58.167 回答