/// <summary>创建连接</summary> /// <param name="dbtype">数据库类型</param> /// <param name="connectionString">连接字符串</param> /// <returns></returns> public static DbConn CreateConn(DbType dbtype, string connectionString) { DbConn cn = null; switch (dbtype) { case DbType.SQLSERVER: cn = new DbConnSqlServer(); break; //case DbType.ORACLE: // cn = new DbConnOracle(); // break; //case DbType.ORACLE_NEW: // cn = new DbConnOracleNew(); // break; case DbType.MYSQL: cn = new DbConnMySql(); break; default: throw new Exception("该数据库类型不适合使用CreateConn,请用new创建!"); } cn.ConnString = connectionString; return(cn); }
/// <summary>创建连接</summary> /// <param name="dbtype">数据库类型</param> /// <param name="ACn">已有的连接</param> /// <returns></returns> public static DbConn CreateConn(DbType dbtype, DbConnection ACn) { DbConn cn = null; switch (dbtype) { //case DbType.SQLSERVER: // cn = new DbConnSqlServer(); // break; //case DbType.ORACLE: // cn = new DbConnOracle(); // break; case DbType.MYSQL: cn = new DbConnMySql(); break; default: throw new Exception("该数据库类型不适合使用CreateConn,请用new创建!"); } cn._conn = ACn; return(cn); }
private int SetDataAction() { if (listinsert.Count == 0) { //Config.Log.Write("SetDataAction 空转");//test return(0); } Config.ExecModel insert_model = null; lock (lock_listinsert) { if (listinsert.Count > 0) { insert_model = listinsert[0]; listinsert.Remove(insert_model); } } if (insert_model == null) { return(0); } if (setdatamysqlconn == null) { var dbconn2 = DbConn.CreateConn(DbType.MYSQL, actmodel.database2.source, actmodel.database2.port, actmodel.database2.database, actmodel.database2.userid, actmodel.database2.password); dbconn2.Open(); setdatamysqlconn = dbconn2 as DbConnMySql; } // Stopwatch swofexce = new Stopwatch(); // swofexce.Start(); //Config.Log.Write("---SetDataAction Sql执行开始"); setdatamysqlconn.BeginTransaction(); try { setdatamysqlconn.ExecuteSqlLocal(insert_model.sql, insert_model.paras, -1); setdatamysqlconn.Commit(); // swofexce.Stop(); // Config.Log.Write("---SetDataAction Sql执行用时:{0}", swofexce.Elapsed.TotalMilliseconds.ToString("0.00")); setdataerrorcount = 0; } catch (Exception ex) { setdataerrorcount++; setdatamysqlconn.Rollback(); lock (lock_listinsert) { listinsert.Insert(0, insert_model); } Config.Log.Error("插入数据出错:" + ex.Message); if (setdataerrorcount >= 3) { setdataerrorcount = 0; throw ex; } else { return(-1); } } currentprocesscount += insert_model.count; return(insert_model.count); }