ADO.Net 和ADO数据访问的注意事项

时间:2010-01-26 12:53:17  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:件。对于ADO的数据访问技术是比较成熟的。ADO 访问数据的时候可以断开连接也可以不断开连接。但是对于ADO.Net而言保持连接简直是浪费,因为其数据已经被提到了客户端来处理,已经和数据库没有关系了。所以在ADO.Net的数据库系统中一般是当取回数据或者完成操作以后就会关闭数据库连接(实际上也许没有被关闭)。ADO.Net的数据库连接的关闭是返回缓冲池中而不是一定断开了和数据库的连接,...
  正文:

ADO.Net是微软的新一代数据访问引擎,采用OLE DB作为数据访问技术基础,采用数据集脱离的方式来访问修改数据。ADO是微软的上一代数据访问引擎,同样是基于OLE DB进行数据访问的数据访问引擎(也许应该说是组件),ADO是采用COM封装了OLE DB引擎的数据访问组件。对于ADO的数据访问技术是比较成熟的。ADO 访问数据的时候可以断开连接也可以不断开连接。但是对于ADO.Net而言保持连接简直是浪费,因为其数据已经被提到了客户端来处理,已经和数据库没有关系了。所以在ADO.Net的数据库系统中一般是当取回数据或者完成操作以后就会关闭数据库连接(实际上也许没有被关闭)。ADO.Net的数据库连接的关闭是返回缓冲池中而不是一定断开了和数据库的连接,对于何时关闭这个连接由ADO.Net的缓冲池管理机制来决定。而ADO在使用的时候如果关闭了连接那么这个连接是真的被关闭了。这也是Delphi里面我们对于一个数据库一般只采用一个连接的原因,为了减少数据库连接的数目来降低数据库负担,当然COM+和MTS也提供了连接池机制,但是其连接池机制似乎不是很成熟,特别是MTS中采用系统的数据连接池可能会造成系统的死锁,当然我们可以使用自己的连接池或者第三方的连接池来管理数据库连接。而在ADO.Net中这一功能是是系统的一部分,但是在使用中发现只有连接被关闭才会返回池中,如果连续的创建数据库连接而已经使用的数据库连接没有被返回池中这个时候,ADO.Net会真实的创建数据库连接并且返回给用户。由此可见在ADO.Net中如果不关闭连接而是不停的请求连接是一件很恐怖的事情。对于ADO.Net中的连接我的看法是尽可能早的关闭(返回系统连接池),这样可以加快系统反应速度而且能够降低数据库连接的数目。ADO的连接的关闭则是一个很有趣的事情,有的时候我们连接数据库速度限制我们频繁的关闭打开连接,为此我们可能需要保持一些连接以获得速度。

ADO在DCOM中运行是对于服务器软件的设计是一个考验。特别是使用自由线程而且自己处理数据连接的时候。在Delphi中我个人认为使用DCOM来进行开发的时候如果没有特别的需要(如数据相应速度,和数据库连接数的限制),最好是使用单元线程,这样我们就无需为ADO连接的处理而担心了!如果系统需要全局管理数据连接的那么一定要小心因为对于服务器端的系统而言只有当系统终止的时候才会回收数据连接。要防止多个线程同时访问同一个数据库连接。而在Delphi 的客户端开发的时候我们要尽量的将少生成业务对象的实例,对于使用过的业务对象如果没有全局申明,那么在其申明的域以外就会被释放,一个好的传统是对于每个对象都在使用过以后赋值为nil,从而让系统回收。在构建一个State Server时,我们最好将ADOConnection的KeepConnection 设置为True,否则只有当这个State Object 被释放的时候才会被关闭,因为KeepConnection只保证在没有数据集被关闭的情况下才能关闭连接!为此我们在使用State Server Object的时候可以将KeepConnection属性设置为True,这样我们就能够在我们不需要数据连接而需要对象的状态的时候自动的将数据库连接关闭。如果有很多的客户端同时连接到服务器,如果才用Apartment时将产生很多的数据库连接,这样就能够在不需要数据库连接的时候自动的关闭数据库连接。如果需要的时候再次打开。

ADO.Net 和ADO数据访问的注意事项》由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Language/Delphi/12414.html


关键字:

关于《ADO.Net 和ADO数据访问的注意事项》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td