开发者社区> 问答> 正文

通过C#中的参数在SqlCommand中的字符串列表

在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;

但这是行不通的。

问题:

我在尝试一些不可能的事情吗? 我采取了错误的方法吗? 我在这种方法上有错误吗? 谢谢你的时间 :)

展开
收起
心有灵_夕 2019-12-28 23:48:41 1119 0
1 条回答
写回答
取消 提交回答
  • 您尝试做的事情是可能的,但不能使用当前的方法。对于SQL Server 2008之前的所有可能解决方案,这是一个非常常见的问题,需要在性能,安全性和内存使用方面进行权衡。

    此链接显示了SQL Server 2000/2005的一些方法

    SQL Server 2008支持传递表值参数。

    2019-12-28 23:48:51
    赞同 展开评论 打赏
问答分类:
C#
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载