如何将oracledataadapter与事务一起使用
本文关键字:一起 事务 oracledataadapter | 更新日期: 2023-09-27 18:29:18
我使用一个方法来使用Select静态获取。当我使用链接数据库使用选择语句时,我得到了错误(ORA-01453 SET TRANSACTION必须是交易的第一个语句。)
我知道solation,但我不能将事务处理方法与Oracledataadapter一起使用。
我想使用Commit()。。。回滚()。
这是我的代码:
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一起使用,概念是相同的:创建事务设置DataAdapter.SelectCommand.Transaction
,然后可以使用Commit()
和Rollback()
进行控制。