存储过程无法正常工作

时间:2013-09-01 13:48:41

标签: asp.net sql sql-server

我无法将其转换为存储过程

// 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+"'";

我收到的错误是“太多争论”。我该怎么办?

2 个答案:

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