由于缺少测试环境,我需要知道以下方案是否有效:
我已经为.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();
}
答案 0 :(得分:1)
是的,该示例应该使用绑定变量,无论是Oracle 8还是9i都无关紧要。您可以执行数据库跟踪以确认某些情况。另一个C#绑定的例子是:
答案 1 :(得分:0)
如果您的应用程序使用的是9iR2客户端或更高版本,在您的情况下似乎是正确的,则可以连接到Oracle8i (or even straight Oracle8) databases。