在C#中使用SqlCommand,我创建了一个查询,其中在where子句中包含IN(列表…)部分。我不需要遍历我的字符串列表来生成列表,而是需要查询(如果您在sqlInjection中考虑,则很危险)。我以为我可以创建一个像这样的参数:
SELECT blahblahblah WHERE blahblahblah IN @LISTOFWORDS
然后在代码中,我尝试添加一个像这样的参数:
DataTable dt = new DataTable(); dt.Columns.Add("word", typeof(string)); foreach (String word in listOfWords) { dt.Rows.Add(word); } comm.Parameters.Add("LISTOFWORDS", System.Data.SqlDbType.Structured).Value = dt;
但这是行不通的。
问题:
谢谢你的时间 :)
您尝试做的事情是可能的,但不能使用当前的方法。对于SQL Server 2008之前的所有可能解决方案,这是一个非常常见的问题,需要在性能,安全性和内存使用方面进行权衡。
此链接显示了SQL Server 2000/2005的一些方法
SQL Server 2008支持传递表值参数。
我希望这有帮助。