public static void PushDBConnection(MyDbConnection2 conn) { if (conn != null) { DbHelperMySQL3.SemaphoreClientsNoPool.Release(); conn.Close(); } }
/// <summary> /// 执行查询语句,返回MySqlDataReader ( 注意:调用该方法后,一定要对MySqlDataReader进行Close ) /// 因为外部要读取数据,不能立即回收连接,所以以MyDataReader封装一下关闭回收连接的操作 /// </summary> /// <param name="strSQL">查询语句</param> /// <returns>MySqlDataReader</returns> public static MyDataReader ExecuteReader(string dbKey, string strSQL) { MyDbConnection2 conn = null; conn = PopDBConnection(dbKey); if (null != conn) { MySqlDataReader mySqlDataReader = conn.ExecuteReader(strSQL); MyDataReader myDataReader = new MyDataReader(conn, mySqlDataReader); return(myDataReader); } return(null); }
/// <summary> /// 将数据库连接添加到空闲数据库连接中 /// </summary> /// <param name="conn"></param> public static void PushDBConnection(MyDbConnection2 conn) { if (UsePool) { if (null != conn) { MyDbConnectionPool pool = null; lock (Mutex) { if (!DBConnsDict.TryGetValue(conn.DatabaseKey, out pool)) { pool = new MyDbConnectionPool(); DBConnsDict[conn.DatabaseKey] = pool; } } if (null != pool) { lock (Mutex) { if (pool.ConnCount <= MaxCount && conn.IsConnected()) { lock (pool.DBConns) { pool.DBConns.Enqueue(conn); } pool.SemaphoreClients.Release(); } else { pool.ConnCount--; conn.Close(); } } } } } else { if (conn != null) { SemaphoreClientsNoPool.Release(); conn.Close(); } } }
public static void ExecuteSqlTranWithIndentity(string dbKey, Hashtable SQLStringList) { MyDbConnection2 conn = null; try { conn = DbHelperMySQL3.PopDBConnection(dbKey); if (null != conn) { conn.ExecuteSqlTranWithIndentity(SQLStringList); } } finally { DbHelperMySQL3.PushDBConnection(conn); } }
public static MyDataReader ExecuteReader(string dbKey, string strSQL) { MyDbConnection2 conn = DbHelperMySQL3.PopDBConnection(dbKey); MyDataReader result; if (null != conn) { MySqlDataReader mySqlDataReader = conn.ExecuteReader(strSQL, new MySqlParameter[0]); MyDataReader myDataReader = new MyDataReader(conn, mySqlDataReader); result = myDataReader; } else { result = null; } return(result); }
public static object GetSingle(string dbKey, string SQLString, int Times) { MyDbConnection2 conn = null; try { conn = DbHelperMySQL3.PopDBConnection(dbKey); if (null != conn) { return(conn.GetSingle(SQLString, Times, new MySqlParameter[0])); } } finally { DbHelperMySQL3.PushDBConnection(conn); } return(null); }
public static int ExecuteSqlInsertImg(string dbKey, string strSQL, List <Tuple <string, byte[]> > imgList) { MyDbConnection2 conn = null; try { conn = DbHelperMySQL3.PopDBConnection(dbKey); if (null != conn) { return(conn.ExecuteSqlInsertImg(strSQL, imgList)); } } finally { DbHelperMySQL3.PushDBConnection(conn); } return(-1); }
public static object ExecuteSqlGet(string dbKey, string SQLString, string content) { MyDbConnection2 conn = null; try { conn = DbHelperMySQL3.PopDBConnection(dbKey); if (null == conn) { return(conn.ExecuteSqlGet(SQLString, content)); } } finally { DbHelperMySQL3.PushDBConnection(conn); } return(null); }
public static int ExecuteSqlTran(string dbKey, List <string> SQLStringList) { MyDbConnection2 conn = null; try { conn = DbHelperMySQL3.PopDBConnection(dbKey); if (null != conn) { return(conn.ExecuteSqlTran(SQLStringList)); } } finally { DbHelperMySQL3.PushDBConnection(conn); } return(0); }
public static int ExecuteSqlTran(string dbKey, List <CommandInfo> list, List <CommandInfo> oracleCmdSqlList) { MyDbConnection2 conn = null; try { conn = DbHelperMySQL3.PopDBConnection(dbKey); if (null != conn) { return(conn.ExecuteSqlTran(list, oracleCmdSqlList)); } } finally { DbHelperMySQL3.PushDBConnection(conn); } return(0); }
public static int ExecuteSqlByTime(string dbKey, string SQLString, int Times) { MyDbConnection2 conn = null; try { conn = DbHelperMySQL3.PopDBConnection(dbKey); if (null != conn) { return(conn.ExecuteNonQuery(SQLString, Times)); } } finally { DbHelperMySQL3.PushDBConnection(conn); } return(-1); }
/// <summary> /// 执行查询语句,返回DataSet /// </summary> /// <param name="SQLString">查询语句</param> /// <returns>DataSet</returns> public static DataSet Query(string dbKey, string SQLString, params MySqlParameter[] cmdParms) { MyDbConnection2 conn = null; try { conn = PopDBConnection(dbKey); if (null == conn) { return(null); } return(conn.Query(SQLString, cmdParms)); } finally { PushDBConnection(conn); } }
/// <summary> /// 执行查询语句,返回MySqlDataReader ( 注意:调用该方法后,一定要对MySqlDataReader进行Close ) /// </summary> /// <param name="strSQL">查询语句</param> /// <returns>MySqlDataReader</returns> public static MySqlDataReader ExecuteReader(string dbKey, string SQLString, params MySqlParameter[] cmdParms) { MyDbConnection2 conn = null; try { conn = PopDBConnection(dbKey); if (null == conn) { return(null); } return(conn.ExecuteReader(SQLString, cmdParms)); } finally { PushDBConnection(conn); } }
/// <summary> /// 执行多条SQL语句,实现数据库事务。 /// </summary> /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的MySqlParameter[])</param> public static void ExecuteSqlTranWithIndentity(string dbKey, Hashtable SQLStringList) { MyDbConnection2 conn = null; try { conn = PopDBConnection(dbKey); if (null == conn) { return; } conn.ExecuteSqlTranWithIndentity(SQLStringList); } finally { PushDBConnection(conn); } }
/// <summary> /// 执行一条计算查询结果语句,返回查询结果(object)。 /// </summary> /// <param name="SQLString">计算查询结果语句</param> /// <returns>查询结果(object)</returns> public static object GetSingle(string dbKey, string SQLString, params MySqlParameter[] cmdParms) { MyDbConnection2 conn = null; try { conn = PopDBConnection(dbKey); if (null == conn) { return(-1); } return(conn.GetSingle(SQLString, 0, cmdParms)); } finally { PushDBConnection(conn); } }
/// <summary> /// 执行多条SQL语句,实现数据库事务。 /// </summary> /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的MySqlParameter[])</param> public static int ExecuteSqlTran(string dbKey, System.Collections.Generic.List <CommandInfo> cmdList) { MyDbConnection2 conn = null; try { conn = PopDBConnection(dbKey); if (null == conn) { return(-1); } return(conn.ExecuteSqlTran(cmdList)); } finally { PushDBConnection(conn); } }
/// <summary> /// 执行多条SQL语句,实现数据库事务。 /// </summary> /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的MySqlParameter[])</param> public static void ExecuteSqlTranWithIndentity(string dbKey, System.Collections.Generic.List <CommandInfo> SQLStringList) { MyDbConnection2 conn = null; try { conn = PopDBConnection(dbKey); if (null == conn) { return; } conn.ExecuteSqlTranWithIndentity(SQLStringList); } finally { PushDBConnection(conn); } }
public static DataSet Query(string dbKey, string SQLString, int Times) { MyDbConnection2 conn = null; try { conn = PopDBConnection(dbKey); if (null == conn) { return(null); } return(conn.Query(SQLString, Times)); } finally { PushDBConnection(conn); } }
public static object GetSingle(string dbKey, string SQLString, int Times) { MyDbConnection2 conn = null; try { conn = PopDBConnection(dbKey); if (null != conn) { return(conn.GetSingle(SQLString, Times)); } } finally { PushDBConnection(conn); } return(null); }
/// <summary> /// 执行带一个存储过程参数的的SQL语句。 /// </summary> /// <param name="SQLString">SQL语句</param> /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param> /// <returns>影响的记录数</returns> public static int ExecuteSql(string dbKey, string SQLString, string content) { MyDbConnection2 conn = null; try { conn = PopDBConnection(dbKey); if (null != conn) { return(conn.ExecuteWithContent(SQLString, content)); } } finally { PushDBConnection(conn); } return(0); }
/// <summary> /// 执行SQL语句,返回影响的记录数 /// </summary> /// <param name="SQLString">SQL语句</param> /// <returns>影响的记录数</returns> public static int ExecuteSql(string dbKey, string SQLString) { MyDbConnection2 conn = null; try { conn = PopDBConnection(dbKey); if (null != conn) { return(conn.ExecuteNonQuery(SQLString)); } } finally { PushDBConnection(conn); } return(-1); }
public static MyDbConnection2 PopDBConnection(string dbKey) { MyDbConnection2 conn = null; DbHelperMySQL3.SemaphoreClientsNoPool.WaitOne(); try { string connectionString; lock (DbHelperMySQL3.Mutex) { if (!DbHelperMySQL3.ConnectionStringDict.TryGetValue(dbKey, out connectionString)) { connectionString = PubConstant.ConnectionString; string dbName = PubConstant.GetDatabaseName(dbKey); int idx0 = connectionString.IndexOf("database=") + "database=".Length; int idx = connectionString.IndexOf(';', idx0); string datebaseName = connectionString.Substring(idx0, idx - idx0); connectionString = connectionString.Replace(datebaseName, dbName); DbHelperMySQL3.ConnectionStringDict[dbKey] = connectionString; } } conn = new MyDbConnection2(connectionString, DbHelperMySQL3.CodePageNames); if (!conn.Open()) { conn = null; } } catch (Exception ex) { conn = null; } finally { if (null == conn) { DbHelperMySQL3.SemaphoreClientsNoPool.Release(); } } return(conn); }
public static int ExecuteSqlTran(string dbKey, List <CommandInfo> cmdList) { MyDbConnection2 conn = null; int result; try { conn = DbHelperMySQL3.PopDBConnection(dbKey); if (null == conn) { result = -1; } else { result = conn.ExecuteSqlTran(cmdList); } } finally { DbHelperMySQL3.PushDBConnection(conn); } return(result); }
public static object GetSingle(string dbKey, string SQLString, params MySqlParameter[] cmdParms) { MyDbConnection2 conn = null; object result; try { conn = DbHelperMySQL3.PopDBConnection(dbKey); if (null == conn) { result = -1; } else { result = conn.GetSingle(SQLString, 0, cmdParms); } } finally { DbHelperMySQL3.PushDBConnection(conn); } return(result); }
public static MySqlDataReader ExecuteReader(string dbKey, string SQLString, params MySqlParameter[] cmdParms) { MyDbConnection2 conn = null; MySqlDataReader result; try { conn = DbHelperMySQL3.PopDBConnection(dbKey); if (null == conn) { result = null; } else { result = conn.ExecuteReader(SQLString, cmdParms); } } finally { DbHelperMySQL3.PushDBConnection(conn); } return(result); }
public static DataSet Query(string dbKey, string SQLString, params MySqlParameter[] cmdParms) { MyDbConnection2 conn = null; DataSet result; try { conn = DbHelperMySQL3.PopDBConnection(dbKey); if (null == conn) { result = null; } else { result = conn.Query(SQLString, cmdParms); } } finally { DbHelperMySQL3.PushDBConnection(conn); } return(result); }
/// <summary> /// 从连接队列中取一个空闲数据库连接 /// </summary> /// <returns></returns> public static MyDbConnection2 PopDBConnection(string dbKey) { MyDbConnection2 conn = null; if (UsePool) { int round = 0; MyDbConnectionPool pool = null; lock (Mutex) { if (!DBConnsDict.TryGetValue(dbKey, out pool)) { string connectionString = PubConstant.ConnectionString; string dbName = PubConstant.GetDatabaseName(dbKey); if (null == dbName) { return(null); } int idx0 = connectionString.IndexOf("database=") + "database=".Length; int idx1 = connectionString.IndexOf(';', idx0); string datebaseName = connectionString.Substring(idx0, idx1 - idx0); pool = new MyDbConnectionPool(); DBConnsDict[dbKey] = pool; pool.DatabaseKey = dbKey; pool.ConnectionString = connectionString.Replace(datebaseName, dbName); } } if (null != pool) { do { //防止无法获取, 阻塞等待 if (pool.SemaphoreClients.WaitOne(1000)) { lock (pool.DBConns) { conn = pool.DBConns.Dequeue(); break; } } else { lock (Mutex) { if (pool.ConnCount < MaxCount) { try { conn = new MyDbConnection2(pool.ConnectionString, CodePageNames); if (conn.Open()) { conn.DatabaseKey = dbKey; pool.ConnCount++; break; } } catch (System.Exception ex) { LogManager.WriteExceptionUseCache(ex.ToString()); } } } } } while (round++ < 150); } } else { SemaphoreClientsNoPool.WaitOne(); try { string connectionString; bool change = false; lock (Mutex) { if (!ConnectionStringDict.TryGetValue(dbKey, out connectionString)) { connectionString = PubConstant.ConnectionString; string dbName = PubConstant.GetDatabaseName(dbKey); int idx0 = connectionString.IndexOf("database=") + "database=".Length; int idx1 = connectionString.IndexOf(';', idx0); string datebaseName = connectionString.Substring(idx0, idx1 - idx0); connectionString = connectionString.Replace(datebaseName, dbName); ConnectionStringDict[dbKey] = connectionString; } } conn = new MyDbConnection2(connectionString, CodePageNames); if (!conn.Open()) { conn = null; } } catch (System.Exception ex) { conn = null; } finally { if (null == conn) { SemaphoreClientsNoPool.Release(); } } } return(conn); }