1

由于缺乏测试环境,我需要知道以下场景是否可行:

我已经为 .Net 版本 9.2.0.4 安装了 Oracle 数据提供程序。在生产中,我必须从我的 C# 应用程序与两个数据库(Oracle 8i 和 9i)进行通信。

Oracle 8i 在这种情况下是否支持绑定变量?

我可能会使用类似于以下的代码:

提前致谢!

OracleCommand cmd = con.CreateCommand();

  OracleTransaction txn = con.BeginTransaction();

  try {
    cmd.CommandText = "update MayJun2009 " +
                      "set balance = balance + :1 " +
                      "where account_id = :2";

      OracleParameter pBalance = new OracleParameter();
    pBalance.OracleDbType = OracleDbType.Int32;
    OracleParameter pAccount = new OracleParameter();
    pAccount.OracleDbType = OracleDbType.Int32;

    cmd.Parameters.Add(pBalance);
    cmd.Parameters.Add(pAccount);

    pBalance.Value = -500;
    pAccount.Value = 1;

    cmd.ExecuteNonQuery();

    pBalance.Value = 500;
    pAccount.Value = 2;

    cmd.ExecuteNonQuery();

    txn.Commit();
  }
  catch (OracleException ex) {
    txn.Rollback();
  }
4

2 回答 2

1

是的,该示例应该使用绑定变量,不管是 Oracle 8 还是 9i。您可以进行数据库跟踪以进行确定。C# 的另一个绑定示例如下:

为 .NET 应用程序构建 Oracle 数据提供程序

于 2010-04-07T14:47:09.923 回答
0

如果您的应用程序使用 9iR2 或更高版本的客户端,在您的情况下似乎是这样,您可以连接到Oracle8i(甚至是直接的 Oracle8)数据库

于 2010-04-07T15:45:16.773 回答