gpt4 book ai didi

asp.net - Oracle中参数化查询的问题

转载 作者:行者123 更新时间:2023-12-03 02:54:05 25 4
gpt4 key购买 nike

我使用的是 Oracle.DataAccess 而不是过时的 System.Data.OracleClient,而且我似乎在将多个参数传递到更新查询时遇到问题

这有效

OracleCommand.CommandText = "UPDATE db SET column1 = :param1 WHERE column2 = 'Y'"
OracleCommand.Parameters.Add(New OracleParameter("param1", "1234"))

但是我希望能够传递多个参数

这是我的完整代码

    OracleConn.Open()
OracleCommand = OracleConn.CreateCommand()
OracleCommand.CommandText = "UPDATE db SET column1 = :param1 WHERE column2 = :param2"
OracleCommand.CommandType = CommandType.Text
OracleCommand.Parameters.Add(New OracleParameter("param1", "1234"))
OracleCommand.Parameters.Add(New OracleParameter("param2", "Y"))
OracleCommand.ExecuteNonQuery()

我的 SELECT 查询似乎在传递多个参数时有效,但在更新参数时无效

最佳答案

虽然我看不出您的示例有任何问题,但我想知道您是否遇到了旧的 BindByName 问题。默认情况下,ODP.NET 按照参数添加到集合的顺序将参数绑定(bind)到查询,而不是根据您想要的名称。尝试在 OracleCommand 对象上将 BindByName 设置为 true,看看是否可以解决问题。

我已经多次遇到这个问题,因此我使用自己的工厂方法来创建自动将此属性设置为 true 的命令。

经典无用的Oracle文档here

关于asp.net - Oracle中参数化查询的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5980615/

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