在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支持传递表值参数。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。