C# 检查datareader中的记录是否为空
我已经浏览了S/O上的其他帖子,但我找不到适合我的解决方案 我有一个可能返回空值的datareader,如果是这样,我希望值等于空C# 检查datareader中的记录是否为空,c#,asp.net-3.5,C#,Asp.net 3.5,我已经浏览了S/O上的其他帖子,但我找不到适合我的解决方案 我有一个可能返回空值的datareader,如果是这样,我希望值等于空 txtMiddleName.Text = rdrGetUserInfo.GetString(1) ?? ""; 上面的字符串不起作用。 当我遍历代码时,代码跳转到错误捕获块 有什么想法吗?这是因为rdrGetUserInfo返回了DBNull,这是一个类 在获取字符串之前,请检查dbnull,我已经有一段时间没有使用它了!: if (!rdrGetUserInfo
txtMiddleName.Text = rdrGetUserInfo.GetString(1) ?? "";
上面的字符串不起作用。
当我遍历代码时,代码跳转到错误捕获块
有什么想法吗?这是因为rdrGetUserInfo返回了DBNull,这是一个类 在获取字符串之前,请检查dbnull,我已经有一段时间没有使用它了!:
if (!rdrGetUserInfo.IsDBNull("someField"))
txtMiddleName.Text = rdrGetUserInfo.GetString(1);
这是因为rdrGetUserInfo返回DBNull,这是一个类 在获取字符串之前,请检查dbnull,我已经有一段时间没有使用它了!:
if (!rdrGetUserInfo.IsDBNull("someField"))
txtMiddleName.Text = rdrGetUserInfo.GetString(1);
在调用GetString之前,您应该这样做。在调用GetString之前,您应该这样做。试试看
txtMiddleName.Text = rdrGetUserInfo.IsDBNull(1) ? string.Empty : rdrGetUserInfo.GetString(1);
试一试
您可以在DataReader上使用
if (!rdrGetUserInfo.IsDBNull(1))
{
txtMiddleName.Text = rdrGetUserInfo.GetString(1);
}
您可以在DataReader上使用
if (!rdrGetUserInfo.IsDBNull(1))
{
txtMiddleName.Text = rdrGetUserInfo.GetString(1);
}
或者,为了缩短时间,您可以这样做:
txtMiddleName.Text = rdrGetUserInfo.IsDBNull(1) ? String.Empty : rdrGetUserInfo.GetString(1);
或者,为了缩短时间,您可以这样做:
txtMiddleName.Text = rdrGetUserInfo.IsDBNull(1) ? String.Empty : rdrGetUserInfo.GetString(1);
IsDbNullint通常比使用GetSqlInt32之类的方法,然后与DBNull.Value或使用自己的.IsNull之类的方法慢得多:
public static int Int32(this SqlDataReader r, int ord)
{
var t = r.GetSqlInt32(ord);
return t.IsNull ? default(int) : t.Value;
}
尝试了一些模板解决方案,但到目前为止没有任何效果。问题是所有Sql类型SqlInt32在这里实际上都是结构,而它们都有.Value属性C,但没有真正的模板来处理它。此外,它们还有自己的INullable接口,该接口只有.IsNull,不能与Nyllable兼容
我怀疑需要一整套Sql类型作为C模板,或者向它们添加ICOnvertible,以便只需要一个或两个模板化方法
如果有人对一两个函数技巧有想法,请说出来:-IsDbNullint通常比使用GetSqlInt32之类的方法,然后与DBNull.Value进行比较或使用它自己的.IsNull慢得多,比如:
public static int Int32(this SqlDataReader r, int ord)
{
var t = r.GetSqlInt32(ord);
return t.IsNull ? default(int) : t.Value;
}
尝试了一些模板解决方案,但到目前为止没有任何效果。问题是所有Sql类型SqlInt32在这里实际上都是结构,而它们都有.Value属性C,但没有真正的模板来处理它。此外,它们还有自己的INullable接口,该接口只有.IsNull,不能与Nyllable兼容
我怀疑需要一整套Sql类型作为C模板,或者向它们添加ICOnvertible,以便只需要一个或两个模板化方法
如果有人有一个或两个功能性技巧的想法,大声说出来:-是我还是其他人讨厌,请使用String。清空它的清洁器。更多.net。是我还是其他人讨厌它,请使用字符串。清空它的清洁器。More.net@user279521-在调用getstring之前,您需要检查IsDBNull。否则,将抛出一个null异常。请参见下面我的答案:txtmidlename.Text=rdrGetUserInfo.IsDBNull1?String.Empty:rdrGetUserInfo.GetString1@user279521-在调用getstring之前,您需要检查IsDBNull。否则,将抛出一个null异常。请参见下面我的答案:txtmidlename.Text=rdrGetUserInfo.IsDBNull1?String.Empty:rdrGetUserInfo.GetString1;