在C#中已准备好的语句中使用子查询的正确/官方方式

时间:2018-12-13 09:35:34

标签: c# .net subquery odbc prepared-statement

在对抗性的环境/时间限制下,我将一个程序打包在一起,该程序通过ODBC连接创建记录,现在情况已经结束,我想对其进行改进。突出的事情之一是能够使用SQL注入功能来创建语句。

我当前正在插入其中的表的示例:

IconButtons

预处理语句的工作方式是先使用

声明密钥
INSERT INTO table1
(..., value1, foreign_key_1)
VALUES
(..., 'myvalue', (SELECT key FROM othertable WHERE othertable.name = 'some payment type'));

然后再创建@identifier 的实例,添加类型和值,将创建的参数添加到语句,使用SqlParameter进行准备,最后运行它。

现在,我想更改手动创建的INSERT以使用SqlCommand()和SqlParameter()来防止SQL注入攻击。

如何在INSERT语句中声明一个子查询来填充字段?一个直接的解决办法是拥有一个prepare(),但似乎没有这种东西。

我使用SqlDbType.Subquery还是SqlDbType.StructuredSqlDbType.Udt,还是SqlDbType.Variant不支持的功能?

0 个答案:

没有答案