一、今天在测试Access的链接关闭时发现一个奇怪的现象。我的测试如下:
在需要操作数据库时进行数据库链接(以下简称dataconn,数据库链接关闭简称为dataclose)。
在Page_PreRender事件内手动关闭链接。然后出现一个奇怪的现象,网页运行后出现了Access的ldb文件,用wholockme查看Mdb文件,发现锁定进程是aspnet_wp.exe。表明数据库链接仍然被保持着,并未被关闭。然后直接按F5调试,发现dataconn和dataclose的次数成对,即打开多少次就关闭多少次,应该不会出现数据库锁定才是。
---------------------------------------------------------------------------------------
二、用using,会造成多次的dataconn和dataclose才能完成一次页面的呈现,这个会不会对性能方面照成不必要的消耗呢。

解决方案 »

  1.   

    1.在你连接mdb数据库后,就算Connection.Close()了,也并非合该mdb完全断绝关系的——Connection会返回连接池,看看接下来还有没有连接该mdb的需求,aspnet_wp.exe也不会就此断开,同样是从效率的角度来考虑这个问题,因为很可能你马上又要连接了。2.Connection在using结束后会回到连接池,效率浪费不会很明显。
      

  2.   

    close不是真正的断开连接,只不过是还给链接池,你可以测试一下有连接池的情况下10000次打开关闭操作会用到多少时间,再测试一下没有连接池的情况下10000次打开关闭会用多少时间
      

  3.   

    真的是非常感谢,提到链接池我才想起查看sdk关于链接池的资料。资料上来看,同样的链接代码。不管打开关闭多少次链接使用的始终只是一个链接池,直到链接池失效。所以,使用using控制是完全没问题的。有关资料来源:SDK2.0中《使用连接池》的《池的创建和分配》