我无法将其转换为存储过程
// sql语句中包含的字符串:
string employer = Session["Employer"].ToString();
然后是sql语句
更新tblWorkData设置EmployerName ='“+ txtemployername.text +”'其中EmployerName ='“+ Employer +”'//上面的字符串
这在asp.net中工作正常 但是当我把它变成存储过程时,
create proc updateWork
@EmployerName nvarchar(max)
as
begin
update tblWorkData set EmployerName=@EmployerName where EmployerName=@EmployerName
end
现在当我在asp.net上执行sp时,
string update = "updateWork '"+employer+"','"+txtemployername.text+"'";
我收到的错误是“太多争论”。我该怎么办?
答案 0 :(得分:1)
您的存储过程只接受一个参数,而您用两个参数调用它。要解决此问题,您需要更改过程以采用如下两个参数:
create proc updateWork
@EmployerName nvarchar(max),
@Employer nvarchar(max)
as
begin
update tblWorkData set EmployerName=@EmployerName where EmployerName=@Employer
end
我改变了where
条款,因为我猜你的意思是。就像它之前没有做任何事情一样。
另外,您可能希望了解如何正确调用过程以及如何以不易受SQL注入攻击的方式添加参数。
答案 1 :(得分:0)
您必须连接到数据库才能执行sql语句:
string employer = Session["Employer"].ToString();
// assume connectionString is a valid connection string
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
SqlCommand command = connection.CreateCommand();
command.CommandText = "updatework";
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@EmployerName", employer);
command.ExecuteNonQuery();
}