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

前端之家收集整理的这篇文章主要介绍了asp.net – Oracle中的参数化查询问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用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按照要添加到集合中的顺序将参数绑定到查询中,而不是根据您的名称。尝试在您的OracleCommand对象上将BindByName设置为true,看看是否可以解决问题。

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

经典无用的Oracle文档here

猜你在找的asp.Net相关文章