如何在byte []中处理null值

use*_*072 1 c# sql wpf null byte

我在Image数据库表的列中有二进制映像,但列中有一些nullImage.所以抛出异常,

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];

    .....
Run Code Online (Sandbox Code Playgroud)

ang*_*son 5

DBNull在尝试强制转换之前,您需要在该列中专门检查:

byte[] data = null;
if (!ds.Tables[0].Rows[0].IsNull(0))
    data = (byte[])ds.Tables[0].Rows[0][0];
Run Code Online (Sandbox Code Playgroud)

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