使用多个参数调用存储过程

时间:2012-10-02 14:40:17

标签: sql-server stored-procedures

  

可能重复:
  C# stored procedure with parameters

我试图从c#调用存储过程传递多个参数,但无法使其正常工作。这是我到目前为止所拥有的。

cmd = new SqlCommand();
cmd = dbConn.CreateCommand();
cmd.CommandText = "inserttoTable @size = " + size + ", @brand = " + brand + ", @manu = " + manu + ", @t= " + id.ToString();
cmd.ExecuteNonQuery();

尺寸,品牌和手册都是字符串。 inserttoTable是存储过程。

我收到以下错误:System.Data.SqlClient.SqlException: Incorrect syntax near the keyword 'TO'.

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

如果使用参数并将命令类型更改为存储过程,则问题会更少:

cmd = new SqlCommand();
cmd = dbConn.CreateCommand();
cmd.CommandText = "inserttoTable";
cmd.CommandType = System.Data.CommandType.StoredProcedure;

cmd.Parameters.Add(new SqlParameter("@size", size));
cmd.Parameters.Add(new SqlParameter("@brand", brand));
cmd.Parameters.Add(new SqlParameter("@manu", manu));
cmd.Parameters.Add(new SqlParameter("@t", id.ToString()));

cmd.ExecuteNonQuery();

答案 2 :(得分:0)

虽然这不是调用存储过程的最佳方法,但如果在字符串参数周围添加单引号,则应该没问题。

cmd = new SqlCommand(); 
cmd = dbConn.CreateCommand(); 
cmd.CommandText = "inserttoTable @size = '" + size + "', @brand = '" + brand + "', @manu = '" + manu + "', @t= '" + id.ToString() + "'"; 
cmd.ExecuteNonQuery(); 

此代码已过时且已在10年前弃用。