【发布时间】:2010-11-01 21:27:58
【问题描述】:
我有这个查询:
SELECT PICTURE FROM LOGO WHERE LOGONO = ?
(“PICTURE”是 SQL Server 中的图像列)
以及读取数据的这段代码:
using (DbDataReader reader = command.ExecuteReader())
{
if (reader.HasRows)
{
if (!reader.IsDBNull(0))
{
byte[] buffer = new byte[8000];
while (reader.GetBytes(0, 0, buffer, 0, 8000) > 0)
picture.AddRange(buffer);
}
}
}
问题是 InvalidOperationException(“行/列不存在数据”)总是在 reader 上抛出。当列包含 null 时,IsDBNull(0) 语句。
MSDN 说:
在调用类型化的 get 方法(例如,GetByte、GetChar 等)之前调用该方法查看是否有空列值,以避免引发错误。
如何在不触发异常的情况下检查列是否不包含 null?我是不是走错路了?
【问题讨论】: