0

我见过类似的线程其中解决方案是第三级 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 ()

没有别的办法了吗?

4

2 回答 2

3

因为null != DBNull.Value.

但是您可以DataReader使用以下方法检查它的值是否为空IsDbNull

DestributionGroup = dr.IsDbNull("Destribution Group") ? "" : dr.GetString("Destribution Group");
于 2013-09-12T08:38:31.673 回答
0

如果您不介意在 dr["Destribution Group"] 为 DBNull.Value 时将 DestributionGroup 设置为 null,则可以使用它:

DestributionGroup = dr["Destribution Group"] as string;
于 2013-09-19T03:26:24.423 回答