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

Operator '==' cannot be applied to operands of type 'string' and 'system.dbnull'

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

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

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

Operator '==' cannot be applied to operands of type 'string' and 'System.DBNull'

错误原因是什么?

改变

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

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

因为mRS.Fields["CompName"].Value是那个字段的值,是string类型,DBNull.Value是DBNull类型。

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

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