【问题标题】:OracleType.Char to OracleDbType.??? - ODP.NET 12.1 conversionOracleType.Char 到 OracleDbType.??? - ODP.NET 12.1 转换
【发布时间】:2014-10-15 16:32:27
【问题描述】:

我们有一个 11gr2 表,其中包含 CHAR(16 BYTE) 列。

在 C# 中使用 Microsoft 已弃用的 OracleClient 我可以将包含 C# 字符串绑定变量的参数化查询构建到 OracleType.Char 中。查询有效。

    OracleParameter ci = new OracleParameter();
    ci.ParameterName = "ci";
    ci.OracleType = OracleType.Char;
    ci.Value = "A020";

    OracleCommand cmd = new OracleCommand(sql, OraConn);
    cmd.Parameters.Add(ci);

迁移到 ODP.NET 12.1 使用 OracleDbType.Char 时出现转换错误。

cmd.Parameters.Add(new OracleParameter("cc", OracleDbType.Char).Value = "A020");

我应该使用什么类型的OracleDbType

【问题讨论】:

  • 第一件事:您是否意识到 ODP.NET 默认为按位置绑定,而 MS Oracle 客户端默认为按位置绑定?您可以在 ODP.NET 中设置 BindbyName=true 以获取 OracleClient 行为。请确认这不是您的问题的原因。
  • @Christian - 我可以确认 bindbyvalue 不是问题 - 非常感谢
  • 不是“bindbyVALUE”............ 在 OracleClient 中,参数名称就是匹配占位符所需的全部内容。在 ODP.NET 中,创建参数的顺序非常重要。在进行迁移的人中,这是导致此错误的一个非常常见的原因。
  • 抱歉记错了 - bindbyname 不是问题

标签: c# oracle11g odp.net oracleclient


【解决方案1】:

使用 OracleDbType.NVarchar2。此外,您可以指定数据大小

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-02
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    • 2021-11-18
    • 2010-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多