事务 OracleTransaction

OracleHelper 类

View Code
1 public static int ExecuteNonQuery(OracleTransaction trans,CommandType cmdType,string cmdText,IList<OracleParameter> commandParameters=null)
2 {
3 try
4 {
5 OracleCommand cmd=new OracleCommand();
6 PrepareCommand(cmd,trans.Connection,trans,cmdType,cmdText,commandParameters);
7 int val=cmd.ExecuteNonQuery();
8 cmd.Parameters.Clear();
9 return val;
10 }
11 catch
12 {
13 return -1;
14 }
15 }
PrepareCommand
1 private static void PrepareCommand(OracleCommand cmd,OracleConnection conn,OracleTransaction trans,CommansType cmdType,string cmdText,IList<OracleParamenter> commandParameters=null)
2 {
3 if(conn.State!=ConnectionState.Open)
4 conn.Open();
5
6 cmd.Connection=conn;
7 cmd.CommandText=cmdText;
8 cmd.CommandType=cmdType;
9
10 if(trans!=null)
11 cmd.Transaction=trans;
12
13 if(commandParameters!=null)
14 {
15 foreach(OracleParameter parm in commandParameters)
16 cmd.Parameters.Add(parm);
17 }
18 }

OracleTransaction.cs

OracleTransaction 使用
1 OracleConnection connection =new OracleConnection(OracleHelper.GetConnStr());
2  if(connection.State!=ConnectionState.Open)
3 {
4 connection.Open();
5 }
6
7 OracleTransaction transaction=connection.BeginTransaction();
8
9  try
10 {
11 string sql1="delete from table1 where id=:id";
12 string sql2="delete from table2 where id=:id";
13 OracleParameter parm=new OracleParameter(":id",id);
14 IList<OracleParameter> lparm=new List<OracleParameter>();
15 lparm.Add(parm);
16
17 OracleHelper.ExecuteNonQuery(transaction,CommandType.Text,sql1,lparm);
18 OracleHelper.ExecuteNonQuery(transaction,CommandType.text,sql2,lparm);
19 transaction.Commit();
20 }
21  catch(Exception ex)
22 {
23 transaction.Rollback();
24 throw ex;
25 }
26  finally
27 {
28 if(connection.State!=ConnectionState.Closed)
29 {
30 connection.Close();
31 }
32 }
posted @ 2011-05-31 15:44  烟岚  阅读(519)  评论(0编辑  收藏  举报