gpt4 book ai didi

sql - FROM 子句中的参数化 SQL

转载 作者:行者123 更新时间:2023-12-04 18:21:12 25 4
gpt4 key购买 nike

使用 OleDbCommand .我可以添加 SQL 参数,从而使查询免受 SQL 注入(inject)的影响,但是有没有办法在 FROM 中执行此操作? cluase.见下文

这个作品

query = "Select * From Company Where @param = 1";
OleDbCommand Command = new OleDbCommand(query, sqlConnStr);

DataTable Table = new DataTable();
DataSet dataSet = new DataSet();
Table = null;

//Add Parameters
Command.Parameters.AddWithValue("param", "ID");
Command.ExecuteNonQuery();
adapter.SelectCommand = Command;
adapter.Fill(dataSet);
Table = dataSet.Tables[0];

它返回一个漂亮的表,其中 id = 1

但是

我正在寻找这样的东西,请注意 FROM CLAUSE
query = "Select * From @tableName Where @param = 1";
OleDbCommand Command = new OleDbCommand(query, sqlConnStr);

DataTable Table = new DataTable();
DataSet dataSet = new DataSet();
Table = null;

//Add Parameters
Command.Parameters.AddWithValue("param", "ID");
Command.Parameters.AddWithValue("tableName", "Company");
Command.ExecuteNonQuery();
adapter.SelectCommand = Command;
adapter.Fill(dataSet);
Table = dataSet.Tables[0];

DBMS 不断返回 "Error in From clause"
PS一切都拼写正确 - 我三重检查

致所有人 - 谢谢,但是我将坚持只使用参数化 SQL。我不喜欢 Dynamic SQL一位

最佳答案

您必须执行动态连接的 SQL 字符串,不幸的是,这会损害参数化 SQL 为您提供的任何好处。见 this post .

DECLARE @SQL varchar(250)
SELECT @SQL = 'Select * From ' + @TableName + ' Where ' + @param + ' = 1'
Exec(@SQL)

不建议使用,如果您可以通过其他方式预先确定表名。

关于sql - FROM 子句中的参数化 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10638990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com