如何使用数据读取器 C# 发现一个空的访问字段
Posted
技术标签:
【中文标题】如何使用数据读取器 C# 发现一个空的访问字段【英文标题】:How to spot an empty access field with data reader C# 【发布时间】:2016-05-04 19:15:07 【问题描述】:我正在尝试创建一个方法,该方法从我的数据库中返回一个满足我条件的字符串。
第一个条件有效。 但是,第二个条件是access中的部分条目是空的,至少有一个字段。
这是我的代码:
OleDbCommand datacommand = new OleDbCommand();
datacommand.Connection = dataConnection;
datacommand.CommandText = "SELECT numNumber, numLocation " +
"FROM tblNumbers " +
"ORDER BY numID ";
OleDbDataReader dataReader = datacommand.ExecuteReader();
while (dataReader.Read())
if (MatchServiceLetters(dataReader.GetString(0))) // && dataReader.GetInt32(1) == null?/)
return dataReader.GetString(0);
如果 int 字段为空,则与 null 的比较不起作用。那我怎么知道它是不是空的呢?
【问题讨论】:
DBNull
是你的朋友。
你可以使用 IsNull: ISNULL ( check_expression , replacement_value )
t0mm13b 你是我的英雄。
【参考方案1】:
来自 MSDN:
不执行任何转换;因此,检索到的数据必须已经是 32 位有符号整数。 调用此方法前调用 IsDBNull 查找空值。
所以你会使用:
if(!dataReader.IsDBNull(1))
return dataReader.GetInt32(1);
else
return 0; // or better yet, make your method return Nullable<int>
【讨论】:
你可以用 IsNull(numNumber,0) 替换所有的,它都是由 SQL 处理的 @Sorceri 确实如此,但是您开始在那里混合关注点。重用 sproc 的情况并不少见,如果 NULL 是该列的有效值,这可能会产生问题。一般来说,使用魔法值来表示缺失数据并不是一个好主意(因此建议使用 Nullable 类型)。以上是关于如何使用数据读取器 C# 发现一个空的访问字段的主要内容,如果未能解决你的问题,请参考以下文章