【问题标题】:VB.NET ORA-01745: invalid host/bind variable nameVB.NET ORA-01745: 无效的主机/绑定变量名
【发布时间】:2013-07-02 20:18:19
【问题描述】:

在过去的 2 小时里,我试图找出无法绑定参数的原因(我知道我没有使用“使用”块。而且我知道 System.Data.OracleClient 已被弃用。)请帮我看看以下代码有什么问题:

  Dim nCount As Integer


  sSQL = " SELECT COUNT(*) FROM USERS WHERE USER_ID = :UID "

    Dim conn As OracleConnection = New OracleConnection(ConfigurationSettings.AppSettings("connString"))
    conn.Open()
    Dim cmd As OracleCommand = New OracleCommand(sSQL, conn)

    cmd.CommandType = CommandType.Text

    With cmd
        .Parameters.Add(New OracleParameter(":UID", txtUserID.Text))
    End With

    Try
        nCount = cmd.ExecuteScalar()
    Catch ex As Exception

    End Try

我已经尝试了所有可以在网上找到的变体:Parameters.Add、Add 或 AddWithValue 中是否有冒号,在括号中添加或创建一个新的 OracleParameter 对象然后添加它...似乎没有任何效果。

但如果我只是在查询中硬编码 USER_ID,删除参数。添加,它会返回一个值。

【问题讨论】:

  • 您是否尝试在创建 OracleCommand 对象后将其 OracleCommand.BindByName = True
  • 嗨 Scotch,VisioStudio 说“'BindByName' 不是 'System.Data.OracleClient.OracleCommand' 的成员”

标签: asp.net oracle


【解决方案1】:

哈哈!

UID实际上是Oracle中的保留字。将您的 UID 变量更改为非保留字。

【讨论】:

  • 我试过非保留字,比如User_ID,还是没有运气:(
  • 我想我当时就敲门了。我在手机上,所以我真的无法进行任何挖掘或测试。希望有人来修复
  • 非常感谢您的努力 :)
  • +1 这解决了我在使用 DapperORM 的 C# 应用程序中出现相同错误消息的问题。
【解决方案2】:

在我看来,您在尝试不同的组合时似乎遗漏了一些东西。

此变体必须有效:

Dim nCount As Integer

sSQL = "SELECT COUNT(*) FROM USERS WHERE USER_ID = :UID"

Dim conn As OracleConnection = New OracleConnection(ConfigurationSettings.AppSettings("connString"))
conn.Open()
Dim cmd As OracleCommand = New OracleCommand(sSQL, conn)

cmd.CommandType = CommandType.Text

cmd.Parameters.Add("UID", OracleType.VarChar).Value = txtUserID.Text

nCount = cmd.ExecuteScalar()

请试一试...

【讨论】:

    【解决方案3】:

    帮自己一个忙,至少看看 Oracle 的 ODP。你将需要它,微软终于在其 OracleClient 上加了一个加分项。切换到 ODP 非常容易。

    在您的情况下,我会省略参数名称。无论如何,您都是按位置绑定的。

    SQL 语法在 Microsoft 实现中也略有不同。用一个 ?充当每个占位符。请参阅http://msdn.microsoft.com/en-us/library/system.data.oracleclient.oracleparameter.aspx 了解更多信息。

    【讨论】:

    • 感谢您的建议,但在应用程序范围内进行更改不是我的决定。我所能做的就是保持和以前一样,让切换越来越不可能。
    猜你喜欢
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    • 2015-04-12
    • 1970-01-01
    • 1970-01-01
    • 2016-05-29
    • 1970-01-01
    • 2014-06-29
    相关资源
    最近更新 更多