使用C#从数据库中读取图像?

ili*_*rit 1 c# blob image

我有这个问题:

SELECT PICTURE FROM LOGO WHERE LOGONO = ?
Run Code Online (Sandbox Code Playgroud)

("PICTURE"是SQL Server中的Image列)

而这段代码用于读取数据:

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);
        }
     }
}
Run Code Online (Sandbox Code Playgroud)

问题是当列包含null时,始终会在reader.IsDBNull(0)语句上抛出InvalidOperationException("行/列不存在数据").

MSDN说:

在调用类型化的get方法(例如,GetByte,GetChar等)之前调用此方法以查看是否存在空列值,以避免引发错误.

如何在不触发异常的情况下检查列是否包含null?我是以错误的方式解决这个问题吗?

adr*_*nks 8

你需要打电话给读者.在访问任何数据之前读取().从MSDN docs for Read:

DataTableReader的默认位置在第一个记录之前.因此,您必须调用Read以开始访问任何数据.