zoukankan      html  css  js  c++  java
  • 执行多条SQL语句,实现数据库事务。(Oracle数据库)

        
            /// <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);
                }
            }
  • 相关阅读:
    C语言寒假大作战03
    C语言寒假大作战02
    C语言寒假大作战01
    助教学期总结
    第十六周助教总结
    C语言I博客作业11
    第十五周助教总结
    C语言I博客作业10
    第十四周助教总结
    C语言寒假大作战03
  • 原文地址:https://www.cnblogs.com/bweb/p/4831164.html
Copyright © 2011-2022 走看看