让我来告诉你把,我是有这方面感受的
数据库和应用程序的连接不是无限制的。要知道一点就是,无论是什么数据库都是按可连接数和可支持CPU数来卖的,但现在的企业老板都希望成本降到最低,所以买数据库肯定不会花多少钱,买服务器也不会买多少CPU啦,这样你能随便浪费数据库连接吗?
如果你几下就把数据库连接用完了,别人就连不上了,所以必须是连上以后马上读数据,读完数据马上关闭,把连接数据库的机会赶快让出来。
但是每次在关闭、重新连接数据库之间,这个操作是很复杂的,^_^,当然这已经被封装起来,不用你去管,但很费时间,而连接池就是把连接缓存起来,而不是销毁,当你用完以后并关闭的时候,并不销毁这个连接,而是把他保存起来,留着给其他人用,免得下去重新生成这个连接
我跟你分享一下我的理解和体会。
你试着写一个10000次循环。循环着做意见这样的事情:
for(int i=0;i<10000;i++){
System.Data.SqlClient.SqlDataReader sda = GetDateReader("select * from XX");
sda.read();}
我这里的GetDateReader函数,返回一个SqlDataReader。这样做然后运行。(具体方法和实现不写了)你会发现他说连接池不够用。
为什么呢?因为你打开了那么多个连接,却都没有关闭。洗完澡没有衣服穿,都待在这个池里面,后续的操作也不好实现。
希望能对你有帮助。另外建议你用这些对象完后,都要记着关闭!不然就待在里面了。