標籤:
/// <summary> /// 執行多條SQL語句,實現資料庫事務。 /// </summary> /// <param name="SQLStringList">(key為sql語句,value是該語句的OracleParameter[])</param> /// <returns></returns> public static bool ExecuteSqlTran(Dictionary<string, object> SQLStringList) { using (OracleConnection conn = new OracleConnection(connectionString)) { conn.Open(); using (OracleTransaction trans = conn.BeginTransaction()) { OracleCommand cmd = new OracleCommand(); try { //迴圈 foreach (var myDE in SQLStringList) { string cmdText=myDE.Key.ToString(); OracleParameter[] cmdParms=(OracleParameter[])myDE.Value; PrepareCommand(cmd,conn,trans,cmdText, cmdParms); int val = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); } trans.Commit(); return true; } catch { trans.Rollback(); return false; } } } }
/// <summary> /// 配置命令對象 /// </summary> /// <param name="cmd">命令對象</param> /// <param name="conn">連線物件</param> /// <param name="trans">事務對象</param> /// <param name="cmdText">sql語句</param> /// <param name="cmdParms">參數</param> private static void PrepareCommand(OracleCommand cmd, OracleConnection conn, OracleTransaction trans, string cmdText, OracleParameter[] cmdParms) { if (conn.State != ConnectionState.Open) conn.Open(); cmd.Connection = conn; cmd.CommandText = cmdText; if (trans != null) cmd.Transaction = trans; cmd.CommandType = CommandType.Text;//cmdType; if (cmdParms != null) { foreach (OracleParameter parm in cmdParms) cmd.Parameters.Add(parm); } }
執行多條SQL語句,實現資料庫事務。(Oracle資料庫)