1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- using System;
- using System.Collections.Generic;
- using System.Data;
- using System.Data.SqlClient;
- using System.Text;
- namespace ConnectionPool.test
- {
- public class DBPool
- {
- private class SqlConnectionObject : IDynamicObject
- {
- private SqlConnection _SqlConn;
- public SqlConnectionObject()
- {
- _SqlConn = null;
- }
- #region IDynamicObject Members
- public void Create(Object param)
- {
- String strConn = (String)param;
- _SqlConn = new SqlConnection(strConn);
- _SqlConn.Open();
- }
- public Object GetInnerObject()
- {
- // TODO: Add SqlConnectionObject.GetInnerObject implementation
- return _SqlConn;
- }
- public bool IsValidate()
- {
- return (_SqlConn != null
- && _SqlConn.GetHashCode() > 0
- && _SqlConn.State == ConnectionState.Open);
- }
- public void Release()
- {
- // TODO: Add SqlConnectionObject.Release implementation
- _SqlConn.Close();
- }
- #endregion
- }
- private ObjectPool _Connections;
- public DBPool(string connection, int initcount, int capacity)
- {
- if (connection == null || connection == "" || initcount < 0 || capacity < 1)
- {
- throw (new Exception("Invalid parameter!"));
- }
- _Connections = new ObjectPool(typeof(SqlConnectionObject), connection, initcount, capacity);
- }
- public SqlConnection GetConnection()
- {
- return (SqlConnection)_Connections.GetOne();
- }
- public void FreeConnection(SqlConnection sqlConn)
- {
- _Connections.FreeObject(sqlConn);
- }
- public void Release()
- {
- _Connections.Release();
- }
- public int Count
- {
- get { return _Connections.CurrentSize; }
- }
- public int UsingCount
- {
- get { return _Connections.ActiveCount; }
- }
- public int DecreaseSize(int size)
- {
- return _Connections.DecreaseSize(size);
- }
- } // DBPool
- }
|