0

我有以下 Web 服务和 SQL 查询:

  public class DIENSTLEISTUNG
        {
            public string DienstleistungName { get; set; }
            public string DienstleistungArtBezeichnung { get; set; }
        }

        internal static List<DIENSTLEISTUNG> Dienstleistung(string RAUM_ID)
        {
            List<DIENSTLEISTUNG> BestuhlungObject = new List<DIENSTLEISTUNG>();

using (SqlConnection con = new SqlConnection(@"Data Source=Localhost\SQLEXPRESS;Initial Catalog=BOOK-IT-V2;Integrated Security=true;"))
            using (SqlCommand cmd = new SqlCommand(@"
                                       SELECT
                                       DISTINCT dl.NAME AS NAME, da.BEZEICHNUNG AS BEZEICHNUNG
                                       FROM RAUM r
                                       RIGHT JOIN DIENSTLEISTUNG_Raum bs ON bs.RAUM_ID = (" + Room_ID + ") 
                                       RIGHT JOIN DIENSTLEISTUNG ba ON bs.DIENSTLEISTUNG_ID = ba.ID 
                                       RIGHT JOIN DIENSTLEISTUNGSART da ON ba.DIENSTLEISTUNGSART_ID = da.ID
                                       RIGHT JOIN DIENSTLEISTER dl ON da.DIENSTLEISTER_ID = dl.ID", con))

            {
                con.Open();
                using (SqlDataReader rdr = cmd.ExecuteReader())
                {
                  while (rdr.Read())
                    {
                        if (rdr["NAME"] != DBNull.Value && rdr["BEZEICHNUNG"] != DBNull.Value)
                        {

                            BestuhlungObject.Add(new DIENSTLEISTUNG()
                               {                                                                                                                                      
                                DienstleistungName = rdr["NAME"].ToString(),
                                DienstleistungArtBezeichnung = rdr["BEZEICHNUNG"].ToString()
                             });

                        }

                    }
                }
            }
            return BestuhlungObject;
        }

    }
}

这个 Web 服务的工作就像魅力一样。我可以发送一个 Room_ID = 219 并获得预期的输出。我的问题是,我如何发送多个以逗号分隔的 Room_ID。例如:Room_ID = 219、220、221

有人可以帮我吗?

提前致谢

4

1 回答 1

1

请参阅接受多个 Id 值的 T-SQL 存储过程

多种方式之一(MS SQL 2005+),如果您可以将参数作为 xml 传递:

var sql =
    @"SET ARITHABORT ON;
    SELECT ...  
    RIGHT JOIN DIENSTLEISTUNG_Raum bs ON bs.RAUM_ID IN
    (
        SELECT tbl.col.value('.', 'varchar(20)')
        FROM @xml.nodes('id') as tbl(col)
    ) ...";
SqlCommand cmd = new SqlCommand(sql, connection);
cmd.Parameters.Add("@xml", SqlDbType.Xml).Value = "<id>111</id><id>222</id><id>333</id>";

或者如果您可以将参数传递为 LIKE,请使用,aaa,bbb,ccc,(注意 LIKE 参数的顺序以避免注入)

var sql =
    @"SELECT ...    
    RIGHT JOIN DIENSTLEISTUNG_Raum bs ON @ids LIKE '%,' + bs.RAUM_ID + ',%'
    ...";
SqlCommand cmd = new SqlCommand(sql, connection);
cmd.Parameters.Add("@ids", SqlDbType.VarChar).Value = ",111,222,333,";
于 2012-06-29T20:24:47.080 回答