簡體   English   中英

在查詢的where子句中參數化多個OR

[英]Parameterize multiple OR in the where clause of a query

我想參數化這個:

select * from myTable where column1='1' or TaxRateRef='18'

進入這樣的事情:

String query = "select * from myTable where "; // column1='1' or column1='18'

var parameters = new List<SqlParameter>();

for(int i = 0; i < data.Rows.Count;i++)
{
   blah blah blah

   query += " Column1='@column1' or";

   parameters.Add(new SqlParameter("@column1", i));

 }

但我得到一個例外

System.Data.SqlClient.SqlException :The variable name '@column1' has already been declared.Variable names must be unique within a query batch or stored procedure.
Incorrect syntax near 'or'.

錯誤很明顯。 您在for循環中添加的參數太多次了。 你應該添加這一行......

parameters.Add(new SqlParameter("@column1", i));

在您的查詢中只有一次。 如果需要在循環的每次迭代中添加不同的值,只需將迭代次數( i )附加到參數名稱,以使其唯一...

 query += string.Format(" Column1='@column1{0}' or", i);
 parameters.Add(new SqlParameter(string.Format("@column1{0}", i), i));

原因是因為@column1一直在追加。 使用下面的一個

parameters.Add(new SqlParameter(string.Format("@column1{0}", i), i));

String query = "select * from myTable where "; // column1='1' or column1='18'

var parameters = new List<SqlParameter>();

for(int i = 0; i < data.Rows.Count;i++)
{
  blah blah blah

  query += " Column1='@column1' or";

  parameters.Add(new SqlParameter("@column1", i));
  parameters.Add(new SqlParameter(string.Format("@column1{0}", i), i));

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM