你好,我建立一個Web服務在Visual Studio 2010中,我得到它被保存在一個字符串一些的id是這樣的:如何在sql查詢中使用以逗號分隔的動態字符串?
string room_ids="5,11,99,42";
它們用逗號分隔。我創建了一個foreach
循環來分割ID和逗號,並在我的SQL查詢中使用它們,直到完成ID。但它不起作用。我得到一個錯誤,它說:
Error converting data type nvarchar to numeric
這裏是我的代碼,在此先感謝您的幫助!
internal static List<RAUM> Raum(string RAUMKLASSE_ID, string STADT_ID, string GEBAEUDE_ID, string REGION_ID)
{
List<RAUM> strasseObject = new List<RAUM>();
string[] allegebaude = GEBAEUDE_ID.Split(new char[] { ',' });
foreach (string gebaudeid in allegebaude)
{
Trace.WriteLine("SIND JETZT DRINNE");
Trace.WriteLine(gebaudeid);
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 = ISNULL(@Raumklasse_ID, RAUMKLASSE_ID) AND STADT_ID = ISNULL(@Stadt_ID, STADT_ID) AND GEBAEUDE_ID = ISNULL(@gebaudeid,GEBAEUDE_ID) AND REGION_ID = ISNULL(@Region_ID, REGION_ID)", con))
{
con.Open();
if (!StringExtensions.IsNullOrWhiteSpace(RAUMKLASSE_ID))
cmd.Parameters.AddWithValue("@Raumklasse_ID", RAUMKLASSE_ID);
else
cmd.Parameters.AddWithValue("@Raumklasse_ID", DBNull.Value);
if (!StringExtensions.IsNullOrWhiteSpace(STADT_ID))
cmd.Parameters.AddWithValue("@Stadt_ID", STADT_ID);
else
cmd.Parameters.AddWithValue("@Stadt_ID", DBNull.Value);
if (!StringExtensions.IsNullOrWhiteSpace(GEBAEUDE_ID))
cmd.Parameters.AddWithValue("@gebaudeid", GEBAEUDE_ID);
else
cmd.Parameters.AddWithValue("@gebaudeid", DBNull.Value);
if (!StringExtensions.IsNullOrWhiteSpace(REGION_ID))
cmd.Parameters.AddWithValue("@Region_ID", REGION_ID);
else
cmd.Parameters.AddWithValue("@Region_ID", DBNull.Value);
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;
}
感謝您的幫助,我有一個小問題,我不能將gebaudeid設置爲空,因爲我的字符串是whith []。我該如何解決這個問題? –
我不確定我的理解。你不用'gebaudeid'做任何事情。您需要使用傳入函數的原始逗號分隔字符串「GEBAUDE_ID」,只需使用該字符串而不分割它。刪除將字符串拆分爲數組的代碼位。 –
它的工作原理,但當我讓gebaude id空我得到一個錯誤:')'附近的語法不正確。 –