如果字符串在默认情况下可为空,为什么我无法将类型为“System.DBNull”的对象转换为类型“System.Stri
本文关键字:System 类型 DBNull Stri 转换 对象 情况下 默认 字符串 为什么 如果 | 更新日期: 2023-09-27 18:30:58
我见过类似的线程,其中解决方案是三级if。
我的问题是,如果字符串可为空,为什么还要出现这样的错误?
我正在使用 ado.net 读取访问中的文本列的值。每当有一行带有空文本列时,我都会收到该错误。
罪魁祸首:
while (dr.Read())
{
UserList.Add(new UserInfo()
{
.
DestributionGroup = (string)dr["Destribution Group"]
.
}
}
class UserInfo
{
.
public string DestributionGroup;
.
}
编辑:
所以换句话说,我必须将我从数据库读取的所有字符串转换为类似于这样的行?
return (accountNumber == DBNull.Value) ? string.Empty : accountNumber.ToString ()
没有其他办法吗?
因为null != DBNull.Value
.
但是您可以使用 IsDbNull
方法检查DataReader
中的值是否为 null:
DestributionGroup = dr.IsDbNull("Destribution Group") ? "" : dr.GetString("Destribution Group");
如果你
不介意 DestributionGroup 设置为 null,当 dr["Destribution Group"] 是 DBNull.Value 时,你可以使用它:
DestributionGroup = dr["Destribution Group"] as string;