C# 连接池技术
class PoolLink
{
string sqlStr="";
SqlConnection con;
/// <summary>
/// C# 数据库连接池
/// </summary>
/// <param name="serverLink">服务连接地址</param>
/// <param name="dbName">数据库名</param>
/// <param name="maxPoolSize">最大连接数</param>
/// <param name="minPoolSize">最小连接数</param>
/// <param name="timeout">延迟时间</param>
/// <param name="lifetime">不用时的存活时间</param>
public PoolLink(string serverLink, string dbName,string maxPoolSize,string minPoolSize,string timeout,string lifetime)
{
sqlStr= "server=" + serverLink + ";integrated security=sspi;database=" + dbName + ";";
sqlStr+= "Max Pool Size=" + maxPoolSize + ";Min Pool Size=" + minPoolSize + ";";
sqlStr+= "Connect Timeout=" + timeout + ";Connection Lifetime=" + lifetime + ";";
sqlStr+= "Asynchronous Processing=true;";
}
public SqlConnection link()
{
try
{
con = new SqlConnection(sqlStr);
con.Open();
}
catch (Exception e)
{ throw e}
return con;
}
public void conClose(SqlConnection con)
{
con.Close();
}
}
//测试
SqlConnection con;
DBLink1 db;
//启动 连接池
private void button2_Click(object sender, EventArgs e)
{
db = new PoolLink("serverLink","dbName","maxPoolSize","minPoolSize","timeout","lifetime");
}
int i = 0;
//打开连接池
private void button3_Click(object sender, EventArgs e)
{
con = db.link();
if (con.State == ConnectionState.Open)
{
i++;
MessageBox.Show("OK"+i.ToString());
}
}
//测试结果:当i=maxPoolSize (最大连接数)时,便会报错。如果在取到最大数之间释放前面的连接时,则i大于maxPoolSize
经测试,最大连接数不是很准确,以maxPoolSize=5为例,有时正好是5个,有时能取到6个,最多取过8个,但没出现小于5个的时候。请大家用的时候注意一下。
posted on 2010-04-13 11:51 VictorShan 阅读(685) 评论(1) 编辑 收藏 举报