执行标量 return 空

ExecuteScalar return null

我在下面使用 SQL 服务器功能来检查用户通过 C# 输入的 userNamepassword windows 表格是否正确,如下所示,但是起初我在第 cmd.ExecuteScalar(); 行遇到错误说

{"Object reference not set to an instance of an object."}

在尝试处理该错误后,我在

上收到错误
return result.ToString();

如果 SQL 服务器函数没有 return 空值,我如何获得空值 return 如果数据库中没有匹配项,则为 1 或 -1?

即便如此,我还是搜索并尝试处理 cmd.ExecuteScalar(); 中的空值 return,如您所见,我的尝试成功了 none

如果有人可以帮助我...谢谢

您可能想做这样的事情:

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();
    }
}

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

您的 SQL 服务器功能代码以 RETURN @vResult 结尾,这是 RETURN 值。

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