我的数据库表的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];
.....
答案 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);