public void Initialize(String ipAddress, Int32 portNo, String charSet, String dbName, String userId, String userPwd) { if (_cancelTasks != null) throw new AegisException(AegisResult.AlreadyInitialized); // Connection Test try { DBConnector dbc = new DBConnector(); dbc.Connect(ipAddress, portNo, charSet, dbName, userId, userPwd); dbc.Close(); } catch (Exception e) { throw new AegisException(AegisResult.MySqlConnectionFailed, e, "Invalid MySQL connection."); } IpAddress = ipAddress; PortNo = portNo; CharSet = charSet; DBName = dbName; UserId = userId; UserPwd = userPwd; _cancelTasks = new CancellationTokenSource(); PingTest(); }
public void QueryNoReader() { if (_dbConnector != null || Reader != null) throw new AegisException(AegisResult.DataReaderNotClosed, "There is already an open DataReader associated with this Connection which must be closed first."); _dbConnector = _pool.GetDBC(); _command.Connection = _dbConnector.Connection; _command.CommandText = CommandText.ToString(); Prepare(); _command.ExecuteNonQuery(); _dbConnector.QPS.Add(1); EndQuery(); }
public void EndQuery() { CommandText.Clear(); _prepareBindings.Clear(); _command.Parameters.Clear(); _command.Connection = null; if (Reader != null) { Reader.Dispose(); Reader = null; } if (_dbConnector != null) { _pool.ReturnDBC(_dbConnector); _dbConnector = null; } }
internal DBConnector GetDBC() { DBConnector dbc; using (_lock.WriterLock) { if (_listPoolDBC.Count == 0) { dbc = new DBConnector(); dbc.Connect(IpAddress, PortNo, CharSet, DBName, UserId, UserPwd); } else { dbc = _listPoolDBC.ElementAt(0); _listPoolDBC.RemoveAt(0); _listActiveDBC.Add(dbc); } } return dbc; }
internal void ReturnDBC(DBConnector dbc) { using (_lock.WriterLock) { _listActiveDBC.Remove(dbc); _listPoolDBC.Add(dbc); } }
public void IncreasePool(Int32 count) { while (count-- > 0) { DBConnector dbc = new DBConnector(); dbc.Connect(IpAddress, PortNo, CharSet, DBName, UserId, UserPwd); using (_lock.WriterLock) { _listPoolDBC.Add(dbc); } } }
internal void ReturnDBC(DBConnector dbc) { _poolDBC.Enqueue(dbc); }
internal DBConnector GetDBC() { lock (this) { if (_poolDBC.Count == 0 && PooledDBCCount + ActiveDBCCount < _maxDBCCount) { var dbc = new DBConnector(); dbc.Connect(IpAddress, PortNo, CharSet, DBName, UserId, UserPwd); _poolDBC.Enqueue(dbc); } } return _poolDBC.Dequeue(); }
public void IncreasePool(int count) { while (count-- > 0) { DBConnector dbc = new DBConnector(); dbc.Connect(IpAddress, PortNo, CharSet, DBName, UserId, UserPwd); _poolDBC.Enqueue(dbc); } }