0
我似乎無法得到這與SQL參數使用參數()不工作
string itemIds = "86,74,32";
cmd.Parameters.AddWithValue("Items", itemIds);
string sql = "SELECT * " +
"FROM Items " +
"WHERE ItemIds IN(@Items)";
我似乎無法得到這與SQL參數使用參數()不工作
string itemIds = "86,74,32";
cmd.Parameters.AddWithValue("Items", itemIds);
string sql = "SELECT * " +
"FROM Items " +
"WHERE ItemIds IN(@Items)";
工作應該seperately添加的每個參數。
string item1 = "86";
string item2 = "32";
cmd.Parameters.AddWithValue("item1", item1);
cmd.Parameters.AddWithValue("item2", item2);
string sql = "SELECT * " +
"FROM Items " +
"WHERE ItemIds IN(@item1,@item2)";
這可能會奏效。
編輯與循環
string [] numbers = {"12", "23", "34"};
string [] parameters = new string[numbers.Length];
for (int i = 0; i < numbers.Length; i++)
{
cmd.Parameters.AddWithValue("param"+i, numbers[i]);
parameters[i] = "@param" + i;
}
var str = String.Join(",", parameters);
string sql = String.Format("SELECT * FROM Items WHERE ItemIds IN({0})",str);
你不能把的In()
參數的整個列表中一個 SQL參數,你必須把每一個在一個單獨的參數來代替。
這裏是構建查詢字符串,並添加參數一種優雅的方式:
Parameterize an SQL IN clause
我有一個項目的動態數,所以我不認爲這會工作 – chobo
@chobo爲什麼它不應該工作?一個for lop會好嗎? – adt
@chobo i'have用for循環版編輯了我的答案。 – adt