如果字符串在默认情况下可为空,为什么我无法将类型为“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 ()

没有其他办法吗?

如果字符串在默认情况下可为空,为什么我无法将类型为“System.DBNull”的对象转换为类型“System.Stri

因为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;
相关文章: