如何在byte []中处理null值

时间:2013-07-06 12:08:03

标签: c# sql wpf null byte

我的数据库表的Image列中有二进制图像,但null列中有一些Image值。所以抛出异常,

  

byte [] data =(byte [])ds.Tables [0] .Rows [0] [0]`因为null。

如何处理?

异常消息,

  

无法将'System.DBNull'类型的对象强制转换为'System.Byte []'。

我的代码,

using (var sqlConn = new SqlConnection(connstr))
{
    sqlConn.Open();
    ds = new DataSet();

    SqlDataAdapter sqa = new SqlDataAdapter("Select Image from Templates where Shoe='" + selectedShoe + "'", sqlConn);

    sqa.Fill(ds);

    //i got error here
    byte[] data = (byte[])ds.Tables[0].Rows[0][0];

    .....

2 个答案:

答案 0 :(得分:5)

在尝试演员之前,您需要专门检查该列中的DBNull

byte[] data = null;
if (!ds.Tables[0].Rows[0].IsNull(0))
    data = (byte[])ds.Tables[0].Rows[0][0];

请注意,如果相关列实际上包含字节数组,则会因相同类型的异常而失败。

答案 1 :(得分:0)

在SQL查询中处理空值对我有用。如果您的Image列为null,则ISNULL()函数将返回您的下一个值(在此示例中为0)。

SqlDataAdapter sqa = new SqlDataAdapter("SELECT ISNULL([Image],0) AS Image FROM Templates where Shoe='" + selectedShoe + "'", sqlConn);