我使用一种方法来使用 Select statiments 来获取表。当我使用链接数据库的 select statiment 时,我收到错误(ORA-01453 SET TRANSATION 必须是第一个转换语句。)
我知道 solition,但我无法使用 Oracledataadapter 的事务方法。
我想使用 Commit() ... Rollback()。
这是我的代码:
private System.Data.DataTable GetDataTable_(string SqlStatement, bool fromProcCall)
{
OracleConnection Con = new OracleConnection();
try
{
Con = Connection();
OpenConnection(Con, fromProcCall);
//-----------------------------------------
DateTime startTime = DateTime.Now;
//-----------------------------------------
DataSet ds = new DataSet();
OracleDataAdapter sda = new OracleDataAdapter(SqlStatement, Con);
sda.Fill(ds, "tbl1");
//-----------------------------------------
if (!fromProcCall)
DurationOfIfsAction = DateTime.Now.Subtract(startTime).Milliseconds;
else
DurationOfFirstIfsAction = DateTime.Now.Subtract(startTime).Milliseconds;
//-----------------------------------------
CloseConnection(Con);
return ds.Tables[0];
}
catch (Exception ex)
{
if (Con != null)
{
try
{
CloseConnection(Con);
}
catch (Exception) { }
}
throw new Exception("ERROR[" + ex.Message + "]");
}
}
最佳答案
基本上,你可以这样做:
oraConn = new OracleConnection("CONNECTION STRING");
oraConn.Open();
//Command with transaction
OracleCommand oraCom = oraConn.CreateCommand();
oraCom.CommandText = "INSERT QUERY";
oraCom.Transaction = oraCom.Connection.BeginTransaction(IsolationLevel.ReadCommitted);
//Execute
if (oraCom.Connection.State == ConnectionState.Closed)
{
oraCom.Connection.Open();
}
oraCom.ExecuteNonQuery();
//Commit / Rollback
oraCom.Transaction.Commit(); // or oraCom.Transaction.Rollback();
要与 DataAdapter 一起使用,概念是相同的:创 build 置 DataAdapter.SelectCommand.Transaction
的事务,然后您可以使用 Commit()
和 回滚()
。
关于c# - 如何使用oracledataadapter进行事务处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9924665/