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

Aly*_*tri -1 c# ado.net

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

compname.Text = mRS.Fields["CompName"].Value == DBNull.Value
              ? ""
              : mRS.Fields["CompName"].Value.ToString();
Run Code Online (Sandbox Code Playgroud)

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

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

导致错误的原因是什么?

Gre*_*rko 5

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

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

compname.Text = DBNull.Value.Equals(mRS.Fields["CompName"]) ? "" : mRS.Fields["CompName"].Value;
Run Code Online (Sandbox Code Playgroud)