基于存储过程返回值的错误

Error Based on Stored Procedure Return Value

本文关键字:错误 返回值 存储过程      更新时间:2023-09-26

我有一个ASP。NET c#网页,在更新模式下有一个DetailsView。用户输入内容并按下按钮以更新数据库中的记录。

我想添加一个JavaScript,运行一个快速的存储过程,并获得一个返回值。如果返回值小于1,那么我希望我的DetailsView更新继续。如果该值大于1,那么我想要停止更新并显示错误消息:' error:大于1'。

一如既往,感谢您的帮助。

您可以调用web服务或页面方法来执行数据库查询,并在Ajax的帮助下将结果返回给客户端。

在这里,您将找到与这里相同的实现答案:使用ajax运行存储过程

您可以使用Ajax and Jquery来实现这一点。基本上,您将在代码中调用一个方法,在其中运行存储过程并返回成功或错误消息

Jquery是:

$("input[id$='ButtonName']").click(function (e) {
                    $.ajax({
                        type: "POST",
                        url: "PageName.aspx/FunctionName",
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        success: function (msg) {
                            if (msg.d == 'Success') {
                                //do something
                            }
                            else if (msg.d == 'ERROR') {
                               //do something
                            }
                        }
                    });
                e.preventDefault();
            });

和方法后面的代码是:

[System.Web.Services.WebMethod]
public static string FunctionName()
{
  //run store proc and return success or error 
}

我最终以一种迂回的方式解决了这个问题。这不是我理想的解决方案,但效果是一样的。

我最后把这段代码放在我的Page_Load中。它从QueryString获取用户代码,然后使用该用户代码运行SQL查询以获取单个值。如果该值大于1,则页面重定向到错误页面。

同样不理想,但它达到了目的。

protected void Page_Load(object sender, EventArgs e)
    {
        //Runs query to determine if returnValue is greater then 1 then redirects if true 
        SqlConnection sqlConnection1 = new SqlConnection("ConnectionString");
        SqlCommand cmd = new SqlCommand();
        cmd.CommandText = "SELECT COUNT(UID) FROM Table WHERE (USER = @USER)";
        cmd.CommandType = CommandType.Text;
        SqlParameter UserID = new SqlParameter("@USER", Request.QueryString["usr"]);
        UserID.Direction = ParameterDirection.Input;
        cmd.Parameters.Add(UserID);
        cmd.Connection = sqlConnection1;
        sqlConnection1.Open();
        int returnValue;
        returnValue = Convert.ToInt32(cmd.ExecuteScalar());
        sqlConnection1.Close();
        if (returnValue > 0)
        {
            Response.Redirect("morethanone?usr=" + Request.QueryString["usr"]);
        }
    }