我可以在odp.net和Oracle 8i中使用绑定变量吗?

时间:2010-04-07 13:45:58

标签: c# .net database oracle odp.net

由于缺少测试环境,我需要知道以下方案是否有效:

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

在这种情况下,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();
  }

2 个答案:

答案 0 :(得分:1)

是的,该示例应该使用绑定变量,无论是Oracle 8还是9i都无关紧要。您可以执行数据库跟踪以确认某些情况。另一个C#绑定的例子是:

Building an Oracle Data Provider for .NET Application

答案 1 :(得分:0)

如果您的应用程序使用的是9iR2客户端或更高版本,在您的情况下似乎是正确的,则可以连接到Oracle8i (or even straight Oracle8) databases