基于存储过程返回值的错误
本文关键字:错误 返回值 存储过程 | 更新日期: 2023-09-27 18:03:39
我有一个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"]);
}
}