运算符'=='不能应用于'string'和'system.dbnull'类型的操作数

时间:2016-11-29 01:58:07

标签: c# ado.net

我正在从数据库中检索数据。因此我使用以下代码:

compname.Text = mRS.Fields["CompName"].Value == DBNull.Value
              ? ""
              : mRS.Fields["CompName"].Value.ToString();

在运行时,我收到以下错误:

  

运算符'=='不能应用于'string'和'System.DBNull'类型的操作数

导致错误的原因是什么?

2 个答案:

答案 0 :(得分:2)

因为mRS.Fields["CompName"].Value是该字段的值并且是字符串类型而DBNull.Value的类型是DBNull。

您应该将DBNull.Value与字段本身(而不是其值)进行比较,如下所示:

compname.Text = DBNull.Value.Equals(mRS.Fields["CompName"]) ? "" : mRS.Fields["CompName"].Value;

答案 1 :(得分:0)

更改

compname.Text = mRS.Fields["CompName"].Value == DBNull.Value ? "" : mRS.Fields["CompName"].Value.ToString();

compname.Text = mRS.Fields["CompName"] == DBNull.Value ? "" : mRS.Fields["CompName"].Value;