在甲骨文麻烦参数化查询 [英] Parameterized query in Oracle trouble

查看:100
本文介绍了在甲骨文麻烦参数化查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆