C#SQL Server - 將列表傳遞給存儲過程我從我的C#代碼調(diào)用SQL Server存儲過程:using (SqlConnection conn = new SqlConnection(connstring)){
conn.Open();
using (SqlCommand cmd = new SqlCommand("InsertQuerySPROC", conn))
{
cmd.CommandType = CommandType.StoredProcedure;
var STableParameter = cmd.Parameters.AddWithValue("@QueryTable", QueryTable);
var NDistanceParameter = cmd.Parameters.AddWithValue("@NDistanceThreshold", NDistanceThreshold);
var RDistanceParameter = cmd.Parameters.AddWithValue(@"RDistanceThreshold", RDistanceThreshold);
STableParameter .SqlDbType = SqlDbType.Structured;
NDistanceParameter.SqlDbType = SqlDbType.Int;
RDistanceParameter.SqlDbType = SqlDbType.Int;
// Execute the query
SqlDataReader QueryReader = cmd.ExecuteReader();我的存儲過程是相當(dāng)標(biāo)準(zhǔn)的但是加入了QueryTable(因此需要使用存儲過程)?,F(xiàn)在:我想List<string>在參數(shù)集中添加一個字符串列表。例如,我的存儲過程查詢?nèi)缦滤荆篠ELECT feature
FROM table1 t1
INNER JOIN @QueryTable t2 ON t1.fid = t2.fid
WHERE title IN <LIST_OF_STRINGS_GOES_HERE>但是,字符串列表是動態(tài)的,幾百長。有沒有辦法將字符串列表傳遞List<string>給存儲過程??? 或者有更好的方法嗎?
3 回答

慕無忌1623718
TA貢獻(xiàn)1744條經(jīng)驗 獲得超4個贊
不,數(shù)組/列表不能直接傳遞給SQL Server。
可以使用以下選項:
傳遞以逗號分隔的列表,然后在SQL中使用函數(shù)拆分列表。逗號分隔列表很可能作為Nvarchar()傳遞
傳遞xml并在SQL Server中有一個函數(shù)解析列表中每個值的XML
使用新定義的用戶定義表類型(SQL 2008)
動態(tài)構(gòu)建SQL并將原始列表作為“1,2,3,4”傳遞并構(gòu)建SQL語句。這很容易發(fā)生SQL注入攻擊,但它會起作用。
添加回答
舉報
0/150
提交
取消