当前位置: 首页 > 面试题库 >

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

麻茂材
2023-03-14
问题内容

在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支持传递表值参数。

我希望这有帮助。



 类似资料:
  • 问题内容: 我使用以下代码从SQL Server表中进行选择: 它运行完美,但是我想防止SQL注入,所以我尝试使用: 当我尝试执行此操作时,SQL Server没有任何结果。 知道为什么吗? 问题答案: “为什么?” 这是因为很少有电影的名称中带有“ @Search”一词-即“ Indiana Jones and the Last @Search”。也许是《星际迷航3:@搜索Spock》。通过将其

  • 问题内容: 我有阵列中的国家/地区列表,我想从列表中选择一个国家/地区(可能是使用随机的?),但是我自己还没有找到答案… 这是我到目前为止所拥有的: 问题答案: 尝试:

  • 问题内容: 我正在尝试使用字符串数组从XML获取资源,因为它当前处于循环中。 谁能建议我该怎么做? 为了清楚起见,资源名称与数组字符串名称相同。 到目前为止,我已经尝试过: 问题答案: 我没有误会你 是你所需要的

  • 问题内容: 如果我有这样的框架 我想检查这些行中是否包含某个单词,我只需要这样做。 输出: 如果我决定列出一个清单 如何检查列表中的行是否包含某个单词? 问题答案: 该方法接受正则表达式模式: 由于支持正则表达式模式,因此您还可以嵌入标志:

  • 如果我有这样一个框架 我想检查这些行中是否有包含某个单词的行,我必须这样做。 输出: 如果我决定列一个清单: 如何检查行是否包含列表中的某个单词?

  • 我知道计算列表项的简单出现次数非常简单: 但是我想知道如何做的是每次一个字符串出现在列表条目的子字符串中时计数。 例如,我想查看列表