我在ASP.Net中構建一個Web服務,它向我發送一個房間列表。我如何設置sql查詢的參數可選?
參數是用逗號分隔的ID。
我將它們保存到一個字符串並構建一個sql select查詢。
當我發送所有4個參數,我一切工作正常,我得到一個結果。但是,當我發送少於4我得到一個錯誤。
System.Data.SqlClient.SqlException: Incorrect syntax near ')'.
如何在sql查詢中設置我的參數可選,以便只選擇我輸入的值?
這裏是我到目前爲止的代碼:
internal static List<RAUM> Raum(string RAUMKLASSE_ID, string STADT_ID, string GEBAEUDE_ID, string REGION_ID)
{
List<RAUM> strasseObject = new List<RAUM>();
string raumklasseid = RAUMKLASSE_ID;
string gebaudeid = GEBAEUDE_ID;
string stadtid = STADT_ID;
string regionid = REGION_ID;
using (SqlConnection con = new SqlConnection(@"Data Source=Localhost\SQLEXPRESS;Initial Catalog=BOOK-IT-V2;Integrated Security=true;"))
using (SqlCommand cmd = new SqlCommand(@"SELECT r.BEZEICHNUNG AS BEZEICHNUNG, r.ID AS ID FROM RAUM r WHERE RAUMKLASSE_ID IN (" + raumklasseid + ") AND STADT_ID IN (" + stadtid + ") AND GEBAEUDE_ID IN (" + gebaudeid + ") AND REGION_ID IN (" + regionid + ")", con))
{
con.Open();
using (SqlDataReader rdr = cmd.ExecuteReader())
{
while (rdr.Read())
{
if (rdr["BEZEICHNUNG"] != DBNull.Value && rdr["ID"] != DBNull.Value)
{
strasseObject.Add(new RAUM()
{
RaumName = rdr["BEZEICHNUNG"].ToString(),
RaumID = rdr["ID"].ToString()
});
}
}
}
}
return strasseObject;
}
在此先感謝您的幫助。
轉儲您的查詢,例如,你可能有這樣的:」 ... FROM RAUM r WHERE RAUMKLASSE_ID IN()...「這是無效的。只有當參數有一個值時,你才應該附加每個約束。 –
我不知道你的意思。你能否向我解釋更多細節? –
我用一些代碼添加了一個答案。 –