用C#建立通用对象池[3]
来源:互联网 发布:maxwell软件理论基础 编辑:程序博客网 时间:2024/05/02 04:50
虽然.NET对数据库连接已经提供了连接池,但是,经测试,使用上述通用对象池实现的数据库连接池,效率要比直接使用.NET管理的连接池高。因为他减少了Open和Close操作,从而节省了时间。
代码如下:
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
- 用C#建立通用对象池[3]
- 用C#建立通用对象池[1]
- 用C#建立通用对象池[2]
- 用C#建立通用对象池
- 用C#建立通用对象池
- 通用方法:用建立Excel对象的方法来导出数据
- 通用对象池
- 用C#建立数据库连接池
- C/C++通用面向对象接口
- Unity中的通用对象池
- Unity中的通用对象池
- c++---对象的动态建立和释放
- 用Java实现一个通用并发对象池
- 用Java实现一个通用并发对象池
- Arrays and generics 数组和通用 不能建立对象的几种实现
- [C++] 通用算法、函数对象、lambda表达式、bind
- 建立对象
- 一个通用并发对象池的实现
- 《COM原理及应用》学习笔记之第二章
- xml数据岛中添加记录
- e words
- 看到了一篇文章
- C++/CLI 中字符串类型的转化: 把System::String转化为std::string
- 用C#建立通用对象池[3]
- C++/CLI 中字符串类型的转化: 把std::string转化为System::String
- [收藏]NET 连接池救生员
- 王力宏获台湾地区最受欢迎歌手亮相后台
- 林语堂:吾国吾民
- MSDN上用DataSet修改数据库的例子
- 今天工作任务
- 互联网、人、web2.0
- 导致电脑死机或重新启动的几种原因?