问题定义:
我在SQL Server数据库中有一个表。此表有一个image类型的列,它允许空值。我将使用SqlDataReader
阅读此表并显示图像是否可用。
我第一次尝试的内容:要检查图片列是否为空,我就这样做了
SqlDataReader reader = command.ExecuteReader(); // command is a SqlCommand
while(reader.Read())
{
if(reader["Image"] != null) // Image is a column name of the table
{
//Do something
}
}
结果:但它永远不等于null(我还检查了Equal
方法)。即使没有插入数据,此列也永远不会为空(在SQL Server中我可以看到它实际上是空的)
我第二次尝试了什么:所以我尝试了这段代码及其工作但我想知道它为什么不返回null。
SqlDataReader reader = command.ExecuteReader(); // command is a SqlCommand
while(reader.Read())
{
if(reader["Image"].GetType() != typeof(System.DBNull))
{
//Do something
}
}
问题:有什么想法解释这种行为吗?如果有更好的方法可以找出SQL Server Tables中Image类型的列是否为null,我将很高兴。
答案 0 :(得分:4)
您应该以这种方式检查DbNull
。
if(reader["Image"] != DbNull.Value) // Image is a column name of the table
{
//Do something
}