gpt4 book ai didi

SQL - OleDbCommand 不更改 Sql 参数

转载 作者:行者123 更新时间:2023-12-01 22:18:58 27 4
gpt4 key购买 nike

下面是我的 Select * 函数的代码 - 它运行良好,一切都很好,直到我从 Select * 更改 SQL 字符串。从公司

        query = "Select * From @1";

然后执行以下操作

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

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

//Add Parameters
Command.Parameters.AddWithValue("@1", SQLTables.Company);

try
{
Command.ExecuteNonQuery();
adapter.SelectCommand = Command;
adapter.Fill(dataSet);
Table = dataSet.Tables[0];
}
catch (Exception e)
{
MessageBox.Show("A Error occured whilst trying to execute the command.\n" + e.Message);
}

return Table;

DBMS 不断发回“查询不完整” - 我认为 Command变量正在发送字符串 query通过而不更改 @1 中的参数至Company

<小时/>

这是一段代码(我的),它确实有效。这是一个插入语句而不是一个选择 - 如果我错了请纠正我,但它是否也不能与 SELECT 一起使用

private void MainActionsInsert(string Action, bool Checked)
{
OleDbCommand Command = new OleDbCommand("INSERT INTO MainActions Values (ID, Action, BoolValue)", DataBaseConnection);
//Add Parameters
Command.Parameters.AddWithValue("ID", GenerateID());
Command.Parameters.AddWithValue("Action", Action);
Command.Parameters.AddWithValue("BoolValue",Checked);
//Add Command
MainActionsAdapter.InsertCommand = Command;
//Execute Agains DataBase
Command.ExecuteNonQuery();
//Accept Changes
}

`

最佳答案

OLEdb 无法识别命名参数。您必须在查询文本中使用 ?

但是,您也不能将动态表名称与参数化查询一起使用,因此即使使用 ? 也无济于事。

您需要使用完整的dynamic SQL ,尽管这可能会导致 SQL 注入(inject)。请务必阅读我链接的完整文章。

关于SQL - OleDbCommand 不更改 Sql 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10636371/

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