我正在尝试使用这段代码将 List< int>
作为SQL参数:
var listID= new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
using (var sqlConnection = new SqlConnection(_connectionstring))
{
using (var cmd = new SqlCommand())
{
cmd.Connection = sqlConnection;
cmd.CommandText = "delete from MyTable where TableID in ( @tableID)";
string param = String.Join(",", listID.ToArray());
cmd.Parameters.Add("@tableID", param);
sqlConnection.Open();
cmd.ExecuteNonQuery();
}
sqlConnection.Close();
}
问题在于,这段代码将生成以下内容:
这将失败,因为:exec sp_executesql N'delete from MyTable where TableID in ( @tableID)',N'@tableID nvarchar(17)',@tableID =N'1,2,3,4,5,6,7,8,9'
有什么解决办法吗?谢谢。将nvarchar值“1,2,3,4,5,6,7,8,9”转换为int数据类型时转换失败。
编辑:我正在使用MS SQL 2012。
IN
可以只用一个参数吗?(我的意思是:一个参数适用于所有情况,而不是一对一的关系...) - user57508