我想使用此代碼使用List< int>
作爲SQL參數:如何使用列表<int>作爲SQL參數在C#
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
是SQL服務器,如果是的話,是什麼版本? – Jodrell 2013-05-14 14:47:52
對不起,這是sql server 2012.我會延長我的問題。 – Chatumbabub 2013-05-14 14:50:07
多個參數之間存在邏輯差異,用逗號分隔,而且* *逗號包含* single *字符串參數。 T-SQL(就像其他任何理智的語言一樣)並不試圖撕開那個單一的參數。 – 2013-05-14 14:54:31