asp.net 数据库连接池的问题

chenwei9120 2008-04-03 04:43:49

请教一下在asp.net2005环境下,关于数据库连接池的原理和使用

1 数据库连接池的概念是什么?

2 在.net2005下,.net是否解决了数据库连接池处理问题,还用我们自己处理不?

3 如果需要处理,都涉及到那些具体的类.

4 数据库连接池是属于数据库方面的知识,还是.net操作方面的知识?

大侠们费心了,小可先行谢过
...全文
197 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenwei9120 2008-04-07
  • 打赏
  • 举报
回复
非常感谢sp1234的详尽答案.
vlysses 2008-04-05
  • 打赏
  • 举报
回复
呵呵,顶
Plife472 2008-04-04
  • 打赏
  • 举报
回复
UP
JavCof 2008-04-04
  • 打赏
  • 举报
回复
学习
liyin_liu 2008-04-04
  • 打赏
  • 举报
回复
(2、3L)高手说的就是这么的详细!
van51 2008-04-04
  • 打赏
  • 举报
回复
ding
  • 打赏
  • 举报
回复
在一个方法中打开一个连接,当方法结束那么连接必结束。

不要把连接作为参数传递给别的方法,应该传递连接字符串,然后在别的连接内使用此串再打开一个新的逻辑连接。

多线程更不要共享连接,而是分别各自打开新的逻辑连接。

实际上,只要连接字符串的值相同,SqlDBConnection对象就会使用此串算出关键key值来共享物理连接。因此跨方法、跨进程的不同的逻辑连接都会自动在底层由连接池来智能地共享物理连接。不要在你的程序中去共享逻辑连接。打开一个连接,做一些数据库操作,然后就关闭它。不要共享,也不要把连接作为参数传递给别的方法,否则反而使得数据库操作变慢、而且经常运行出错。
  • 打赏
  • 举报
回复
假设你的应用程序在100分钟内与数据库建立10000次(逻辑)连接,通过连接池,实际上可能仅需要建立10个物理连接。

using(DBConnection db= 建立数据库连接())
{
//todo:花费2、3秒钟使用db对数据库读写操作,例如读取某个查询结果到dataset中。
}
//todo:使用dataset中读取出来的数据继续处理


连接池其实就是这样容易使用。当使用SqlDbconnection类型的连接对象时,在using{}结尾处,db变量被释放时,物理连接被放回连接池,那么其它的建立数据库连接方法执行时就直接重复使用这个连接。

表面上看起来花了几十毫秒多创建一个对象,然而迅速打开和关闭数据库逻辑连接,可以加快数据库操作,因为连接被更好地复用了。并且,由于你不需要在应用程序中去维护“共享连接”的逻辑麻烦,你的程序逻辑简洁,运行起来可靠、无需反复测试。

因此,你自己千万不要画蛇添足地去“自己处理”连接共享问题。

连接池仅仅是数据连接对象中增加一点代码逻辑,在.net framework类库中已经实现好了,随手可用,无需去煞有介事地去学什么数据库理论和“框架”之类的。如果学理论,最多用30分钟查查资料就可以。当然理解.net framework类库中每一个有用知识都是必要的。

17,748

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧