我正在查询的db返回一些空值.如何防止这种情况并确保调用者获取一些数据.
我的代码是:
使用DataReader
while (dr.Read())
{
vo = new PlacementVO();
vo.PlacementID = dr.GetString(0);
Run Code Online (Sandbox Code Playgroud)
如果我使用数据集,我可以这样做.
obj.email = (row["email"] == DBNull.Value) ? String.Empty : Convert.ToString(row["email"]);
Run Code Online (Sandbox Code Playgroud)
谢谢
还有IsDBNull(int ordinal)
,如果你正在使用的序号(你是).
所以:
string email = reader.IsDBNull(0) ? null : reader.GetString(0);
Run Code Online (Sandbox Code Playgroud)
如果您正在使用字符串列名称,那么要使用它,您必须先调用GetOrdinal
,例如:
string GetSafeString(this IDataReader reader, string name)
{
int index = reader.GetOrdinal(name);
return reader.IsDBNull(0) ? null : reader.GetString(0);
}
Run Code Online (Sandbox Code Playgroud)
当然,只查看一次序数更快,而不是每行一次.
类似的方法可以用于int?
等,或使用默认值而不是null.
归档时间: |
|
查看次数: |
391 次 |
最近记录: |