C#如果ExecuteScalar = null则为else语句

时间:2014-03-21 20:43:29

标签: c# sql

您好我正在尝试这样做...如果数据返回null则执行某些操作...如果不执行其他操作...

这是我为使这项工作而编写的代码,但它不起作用?

        SqlConnection sqlCon1 = new SqlConnection("PRIVATE");
        SqlCommand sqlCmd1 = new SqlCommand();
        sqlCmd1.CommandText = "Select AccStatus From PDMStatus WHERE Data = 'ToBeWebEnabled8'";
        sqlCmd1.Connection = sqlCon1;

        sqlCon1.Open();

        if (sqlCmd1.ExecuteScalar() == null)
        {
            Button1.Enabled = true;
        }
        else
        {
            Button1.Enabled = false;  
        }

        sqlCon1.Close();

请帮助,谢谢。

2 个答案:

答案 0 :(得分:8)

" NULL"因为它存在于DBMS中而不是由C#或.NET中的null表示,而是使用单例值System.DBNull.Value

你想要这个:

this.Button1.Enabled = sqlCmd1.ExecuteScalar() == DBNull.Value;

答案 1 :(得分:0)

您需要执行阅读器,然后才能使用HasRows属性:

using(var sqlCon1 = new SqlConnection("PRIVATE"))
using (var sqlCmd1 = new SqlCommand())
{
    sqlCmd1.CommandText = "Select AccStatus From PDMStatus WHERE Data = 'ToBeWebEnabled8'";
    sqlCmd1.Connection = sqlCon1;

    sqlCon1.Open();
    using (var reader = sqlCmd1.ExecuteReader())
        Button1.Enabled = reader.HasRows;
}

我已使用using语句确保所有内容都被删除/关闭。