首页 / C# / C#数据库连接池 [转]
C#数据库连接池 [转]
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#数据库连接池 [转],小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1959字,纯文字阅读大概需要3分钟。
内容图文
![C#数据库连接池 [转]](/upload/InfoBanner/zyjiaocheng/1289/6117f1eb7fbf4aa5bac254f36db2e9f7.jpg)
using System.Data.SqlClient;
using System.Collections;
///
<summary>
/// ConnectionPool 的摘要说明
/// </summary>
public
class ConnectionPool
{
private static ConnectionPool
cpool = null;//池管理对象
private static Object objlock =
typeof(ConnectionPool);//池管理对象实例
private int size =
10;//池中连接数
private int useCount =
0;//已经使用的连接数
private ArrayList pool =
null;//连接保存的集合
private String ConnectionStr =
"";//连接字符串
public
ConnectionPool()
{
//
// TODO:
在此处添加构造函数逻辑
//
ConnectionStr =
ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
size = 100;
pool = new
ArrayList();
}
//创建获取连接池对象
public static ConnectionPool
getPool()
{
lock (objlock)
{
if
(cpool ==
null)
{
cpool = new
ConnectionPool();
}
return
cpool;
}
}
//获取池中的连接
public
SqlConnection getConnection()
{
lock
(pool)
{
SqlConnection tmp =
null;
if
(pool.Count >
0)
{
tmp =
(SqlConnection)pool[0];
pool.RemoveAt(0);
//不成功
if
(!isUserful(tmp))
{
//可用的连接数据已去掉一个
useCount--;
tmp =
getConnection();
}
}
else
{
//可使用的连接小于连接数量
if (useCount <
size)
{
try
{
//创建连接
SqlConnection conn = new
SqlConnection(ConnectionStr);
conn.Open();
useCount++;
tmp =
conn;
}
catch (Exception
e)
{
}
}
}
return
tmp;
}
}
//关闭连接,加连接回到池中
public void
closeConnection(SqlConnection con)
{
lock
(pool)
{
if (con
!= null)
{
pool.Add(con);
}
}
}
//目的保证所创连接成功,测试池中连接
private bool
isUserful(SqlConnection con)
{
//主要用于不同用户
bool result =
true;
if (con !=
null)
{
string
sql = "select
1";//随便执行对数据库操作
SqlCommand cmd = new SqlCommand(sql,
con);
try
{
{
cmd.ExecuteScalar().ToString();
}
catch
{
result =
false;
}
}
return
result;
}
}
//使用连接后的连接获取方法
//获取连接时,就不用创建连接直接从池中获取数据
string strsql = "select * from
Chapter";
SqlDataAdapter sqldap =
new SqlDataAdapter(strsql,
ConnectionPool.getPool().getConnection());
DataSet set = new DataSet();
sqldap.Fill(set);
GridView1.DataSource =
set.Tables[0].DefaultView;
GridView1.DataBind();
原文:http://www.cnblogs.com/llkey/p/3689122.html
内容总结
以上是互联网集市为您收集整理的C#数据库连接池 [转]全部内容,希望文章能够帮你解决C#数据库连接池 [转]所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。