namespace GLPublic { public class GLDBPool { public class SQLConnectInfo { public AutoResetEvent sqlEvent; public SqlConnection sqlConn; public bool bUsing; } public GLDBPool() { m_cnConnect = 1; } public GLDBPool(String strConn, int cnConnect) { if(!OnInitialUpdate(strConn, cnConnect)) return; }
& "persist security info=False;" _
& "user id=sdfa;Password=das;"
{
public class GLDBPool
{ public class SQLConnectInfo
{
public AutoResetEvent sqlEvent;
public SqlConnection sqlConn;
public bool bUsing;
} public GLDBPool()
{
m_cnConnect = 1;
} public GLDBPool(String strConn, int cnConnect)
{
if(!OnInitialUpdate(strConn, cnConnect)) return;
}
/// <summary>
/// 初始化函数
/// <summary>
public bool OnInitialUpdate(String strConn, int cnConnect)
{
if(cnConnect<=0)
{
m_cnConnect = 1;
}
m_cnConnect = cnConnect;
//初始化数据库连接 m_ConnectList = new ArrayList();
m_ConnectList.Clear(); for(int i=0; i<m_cnConnect; i++)
{
SQLConnectInfo sqlInfo = new SQLConnectInfo();
sqlInfo.sqlConn = new SqlConnection(strConn);
sqlInfo.sqlConn.Open();
sqlInfo.sqlEvent = new AutoResetEvent(false);
sqlInfo.bUsing = false;
m_ConnectList.Insert(i, sqlInfo);
} return true;
}
public SqlConnection GetConnect()
{
for(int i=0; i<m_cnConnect; i++)
{
SQLConnectInfo sqlInfo = (SQLConnectInfo)m_ConnectList[i];
if(sqlInfo.bUsing == false)
{
sqlInfo.sqlEvent.WaitOne();
sqlInfo.bUsing = true;
sqlInfo.sqlEvent.Set();
}
return sqlInfo.sqlConn;
}
return null;
} public void FreeConnect(SqlConnection sqlConn)
{
for(int i=0; i<m_cnConnect; i++)
{
SQLConnectInfo sqlInfo = (SQLConnectInfo)m_ConnectList[i];
if(sqlInfo.sqlConn == sqlConn)
{
sqlInfo.sqlEvent.WaitOne();
sqlInfo.bUsing = false;
sqlInfo.sqlEvent.Set();
break;
}
}
} public void Release()
{
for(int i=0; i<m_cnConnect; i++)
{
SQLConnectInfo sqlInfo = (SQLConnectInfo)m_ConnectList[i];
sqlInfo.sqlEvent.Close();
sqlInfo.sqlConn.Close();
sqlInfo.bUsing = false;
}
}
// 用户变量声明区
ArrayList m_ConnectList;
private int m_cnConnect; }
}