如何在Sql commandText中传递int参数

如何传递像SQL命令参数这样的整数值?

我这样想:

cmd.CommandText = ("insert_questions '" + cmd.Parameters.AddWithValue(store_result,store_result) + "','" + cmd.Parameters.AddWithValue(store_title, store_title) + "', '" + cmd.Parameters.AddWithValue(store_des, store_des) + "'"); 

store_result是int,其他2个参数是字符串类型。

store_result正在给出如下错误消息。

参数1:无法从’int’转换为’string’

在SP中,有另一个int类型变量,它将获得store_result的值。

传递int参数的正确语法是什么?

谢谢。

它应该是这样的,

 cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = ("insert_questions") ; cmd.Parameters.AddWithValue("@value", valueHere); cmd.Parameters.AddWithValue("@value2", valueHere); 

请注意, @value@value2是存储过程中声明的参数。

正确的方法是

 using(var connection = new SqlConnection(ConnectionString)) { connection.Open(); using(var command = new SqlCommand("SELECT * FROM Table WHERE ID=@someID",connection)) { command.Parameters.AddWithValue("someID",1234); var r = command.ExecuteQuery(); } } 

这意味着它甚至可以用于文本查询。 使用存储过程更容易 – 而不是sql查询,您只需提供存储过程名称:

 using(var connection = new SqlConnection(ConnectionString)) { connection.Open(); using(var command = new SqlCommand("insert_sproc",connection)) { command.CommandType = CommandType.StoredProcedure; command.Parameters.AddWithValue("someID",1234); var r = command.ExecuteQuery(); } } 

试试这个:

  cmd.CommandText = ("insert_questions @store_result, @store_title, @store_des"); cmd.Parameters.AddWithValue("@store_result", store_result); cmd.Parameters.AddWithValue("@store_title", store_title); cmd.Parameters.AddWithValue("@store_des", store_des); 

您不连接SqlParameter实例; 代替:

 cmd.CommandText = "insert_questions @store_result, @store_title, @store_des"; cmd.Parameters.AddWithValue("store_result", store_result); cmd.Parameters.AddWithValue("store_title", store_title); cmd.Parameters.AddWithValue("store_des", store_des); 

AddWithValue中使用的名称在TSQL中用作@store_result等。

如果我们假设inert_questions实际上是一个proc,那么它甚至更简单:

 cmd.CommandText = "insert_questions"; cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("store_result", store_result); cmd.Parameters.AddWithValue("store_title", store_title); cmd.Parameters.AddWithValue("store_des", store_des); 

或者,如果所有这些看起来都很乏味,那么像dapper-dot-net这样的工具可以让这更容易:

 someOpenConnection.Execute("insert_questions", new { store_result, store_title, store_des }, commandType: CommandType.StoredProcedure);