在甲骨文麻烦参数化查询 [英] Parameterized query in Oracle trouble
问题描述
我用 Oracle.DataAccess
,而不是过时的 System.Data.OracleClient的
,我似乎是其传递多个参数我更新查询的麻烦
I'm using Oracle.DataAccess
rather than the obsolete System.Data.OracleClient
and I seem to be having trouble passing multiple parameters to my update query
此工作
OracleCommand.CommandText = "UPDATE db SET column1 = :param1 WHERE column2 = 'Y'"
OracleCommand.Parameters.Add(New OracleParameter("param1", "1234"))
但我希望能够通过多个参数
But I want to be able to pass multiple parameters
下面是我完全code
Here's my full code
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
查询似乎要传递多个参数,但是当工作不更新有一个
My SELECT
query seems to work when passing multiple parameters but not the update one
推荐答案
虽然我看不到什么毛病你的榜样,我不知道如果你被老按 BindByName
问题。默认情况下,ODP.NET绑定参数在它们被添加到集合,而不是基于他们的名字,只要你愿意的顺序查询。尝试设置 BindByName
到真正
你的的OracleCommand
对象,看看如果解决了这个问题。
Although I can't see anything wrong with your example, I wonder if you're being hit by the old BindByName
problem. By default, ODP.NET binds parameters to the query in the order in which they are added to the collection, rather than based on their name as you'd like. Try setting BindByName
to true
on your OracleCommand
object and see if that fixes the problem.
我有这个问题,我用我自己的工厂方法来为我创建一个自动将此属性设置为真正
命令,这样很多次了。
I've had this problem so many times that I use my own factory method to create commands which automatically sets this property to true
for me.
经典没用Oracle文档<一个href=\"http://download.oracle.com/docs/cd/B19306_01/win.102/b14307/OracleCommandClass.htm#DAFCJDDG\">here
Classic useless Oracle documentation here
这篇关于在甲骨文麻烦参数化查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!