- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试实现具有以下签名的 API:
public static List<string> SearchDatabase(
string column,
string value);
API 的实现需要构造一个带有 WHERE
子句的 SQL SELECT
查询,该子句使用在 column
参数中指定的列名.
查询:
string query =
string.Format(
"SELECT Name, @Column " +
"FROM Db1 " +
"INNER JOIN Db2 ON Db1.Id = Db2.Id " +
"WHERE @Column = @Value");
SQL命令及参数:
SqlCommand selectCmd =
new SqlCommand(
query,
connection);
selectCmd.CommandTimeout = SqlCommandTimeout;
selectCmd.Parameters.AddRange(
new SqlParameter[]
{
new SqlParameter("@Column", column),
new SqlParameter("@Value", value)
});
然后我这样执行:
SqlDataReader sqlDataReader = selectCmd.ExecuteReader();
while (sqlDataReader.Read())
{
// ...
}
问题是 sqlDataReader
没有返回任何行,所以我没有进入上面的 while
循环。
但是,如果我将上面查询的最后一行更改为:
"WHERE @Column = @Value");
到
"WHERE Vendor = @Value");
(即,将列名称硬编码为“供应商”)然后它就可以工作了。
我从所做的研究中了解到,不可能将列名作为参数传递,而只能传递我们查询的值。但是,它似乎确实让我在 SELECT
子句中使用了 @Column
参数,而不是 WHERE
子句。
由于 SQL 注入(inject)问题,我不想求助于动态 SQL。还有其他解决方法吗?
最佳答案
不幸的是表名,列名不能参数化。因为你知道表的结构,你可以在这个参数中有一个可能的列名的白名单,然后使用字符串连接来避免 SQL 注入(inject):
"WHERE " + Sanitize(column) + " = @Value");
关于c# - 是否可以在不求助于动态 SQL 的情况下查询用户指定的列名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7441344/
我有以下代码: $(document).ready(function() { // hides
Closed. This question needs details or clarity。它当前不接受答案。
好吧,我的一个作业问题是取一个列表的列表,并将每个子列表的汽车作为一个列表返回。我把它放在可以打印出值的地方,但它不是列表。老实说,我不知道如何输出列表。这是我得到的: (define (car-pr
我把5、4分别填入空白的1st Number、2nd Number,然后点击输出中的Multiply。我期待得到 20,但我得到了零,为什么? 这是代码(也是 on JSBin ): var num1
在新数据集中,我创建了两个新列,Start_time 和 End_time。我还想创建一个列来显示这两个时间之间的差异。这是我的代码: SELECT b.company, b.NAME,
嗨,我想弄清楚这个问题,已经查看了很多地方,但由于我的表结构,我正在苦苦挣扎。这是我的表结构: 用户 - id, login (pk) 类(class) - id (pk), name users_t
我有这样的代码: if (X or Y) == ("Cat" or "Dog" or "Fish" or "Bird"): print X, Y 它仅在 X == "Cat" 时有效。有人知道
我目前正在开发一款玩家玩老虎机的游戏。该游戏基于用户停止金钱,100 瑞典克朗、300 瑞典克朗或 500 瑞典克朗。然后用户为每场比赛下注。独臂强盗在九个棋子区域中随机吐出三个不同的符号。见图: 游
我正在用 python 编写程序,但遇到无法解决的错误。 问题是: 我有一组指向 3D 空间中的点,我将它存储在一个矢量(rake)中。我的观点是建立一个流表面。所以我将这些点附加到另一个列表,以便我
我被一个问题困了几天。这可能是你的脑袋比我大! 我有一堆 CSV 文件,我希望将它们连接成一个 .csv 文件,并按数字排序。好的,首先遇到的问题是 ID(我想按 ID 排序)名称。例如 sort -
我已经阅读了几个教程,但我仍然没有任何线索:-)我有一个 c 文件“liboratidy.c”,该文件包含一些 oder 库: #include #include #include #inclu
我是 CSS 新手,想学习如何制作网页。在 Codecademy 上学习时,有一节关于类(class)和 ID 的类(class)让我感到困惑。应该如何设置类,如果是这样的话会有什么不同吗 .cont
我正在训练代码问题,在这个问题上我有问题要解决,你能给我一些解决方法吗? 问题取自这里: https://www.ieee.org/documents/IEEEXtreme2008_Competiti
("*").each(function () { if ($(this).children().length == 0) { $(this).text($(this).text()
最近开始使用hadoop。现在我想从一个没有安装 hadoop-client 的远程主机访问 hdfs,只是依赖 hadoop-client-2.0.4-alpha.jar 。 但是当我尝试访问 hd
大家好,我刚刚在我的 Windows 7 上安装了 cygwin,其中包含所有软件包(包括 make)。但是一旦我尝试在 cygwin 中使用 make 命令,它就会给我错误消息:“bash: mak
我正在尝试了解 quartz 2d 坐标系,目前我正在阅读 Apple 引用指南和旧书“Quartz 2d graphics for mac os x developer”。 我理解用户空间和设备空间
我想用 python 与我的串口通信。我为 linux 安装了 pyserial 和 uspp。不过,当我运行以下代码时: import serial ser = serial.Serial('/de
我有一个我编写的 Android 应用程序,它表现出一些奇怪的行为。 当我打开一个应用程序时,假设堆栈中有三个 Activity A-B-C 其中a是入口点,C是当前查看的 Activity ,如果我
CREATE TABLE country ( country_id VARCHAR (20), country_name CHAR (20), state_no INT (5), PRIMARY KE
我是一名优秀的程序员,十分优秀!