ExecuteScalar返回null

时间:2018-08-23 12:19:43

标签: c# sql-server sql-server-2008 .net-4.0

我正在使用下面的SQL Server函数来检查用户通过C#Windows窗体输入的userNamepassword是否正确,如下所示,但是起初我在第{{ 1}}

  

{“对象引用未设置为对象的实例。”}

尝试处理该错误后,我得到

上的错误
cmd.ExecuteScalar();

如果SQL Server函数未返回空值,我如何获取空值,如果数据库中没有匹配项,则返回1或-1?

即使如此,我仍然搜索并尝试处理return result.ToString(); 返回的空值,因为您可以看到我的尝试,但没有成功

请有人帮助我...谢谢

2 个答案:

答案 0 :(得分:2)

您可能想要执行以下操作:

public string userLogin()
{
    string connStr = ConfigurationManager.ConnectionStrings["SRJDconnstr"].ToString();
    string cmdStr = @"SELECT dbo.USER_LOGIN(@USER_NAME, @PWD)";

    using (SqlConnection conn = new SqlConnection(connStr))
    using (SqlCommand cmd = new SqlCommand(cmdStr, conn))
    {
            conn.Open();

            cmd.Parameters.AddWithValue("@USER_NAME", TB_USER_NAME.Text);
            cmd.Parameters.AddWithValue("@PWD", TB_PWD.Text);

            var result = cmd.ExecuteScalar();

            return result.ToString();
    }
}

答案 1 :(得分:0)

cmd.ExecuteScalar()将返回结果集中第一行的第一列。

您的SQL Server功能代码以RETURN @vResult结尾,即RETURN值。

尝试将RETURN @vResult替换为SELECT @vResult