使用原始的OLE DB提供者 Www~~com
MDAC对许多数据源提供了原始的数据提供者,比如SQL Server,Oracle和ACCESS数据库,这样你不需要再通过ODBC来获取数据(也就是说不需要再通过ODBC驱动这一层),这样的好处是你能更快的得到数据,并且降低磁盘和内存的开销。
如果使用客户端游标的话,断开connection连接
ADO有一个特征是当使用客户端游标操作Recordset记录集的时候,不需要和服务器进行联系。你可以充分利用这个特征降低服务器端的开销(服务器就不需要维护这些连接了),当你操作完记录集需要更新的话,可以重新和数据库进行连接来更新数据。为了创建一个可以断开连接的记录集,你同时也需要使用静态游标(adOpenStatic)和批处理的加锁模式(adLockBatchOptimistic)。下面的示例是用VC写的: @com
以下为引用的内容:
…… ^com
pRs.CreateInstance(__uuid(Recordset)); _com
pRs->CursorLoction=adUseClient;
pRs->Open(strCmdText,strConnection,adOpenStatic,adLockBatchOptimistic,adCmdText); 中国站.长站
pRs->PutRefActiveConnection(NULL); @com
file://这里可以对记录集对象pRs进行操作
pRs->PutRefAxctiveConnection(pCon); file://重新和数据库建立连接 中.国.站.长.站
pRs->UpdateBatch(adAffectAll); file://批量更新数据 ~com
需要注意的是,当你执行批量更新的话,你必须自己处理数据冲突问题,因为当你更新数据的时候,其他人可能也正在对该数据进行操作。 _com
如果不需要返回记录的话,使用adExecuteNoRecords选项
ADO 2.0包括一个新的执行选项称为adExecuteNoRecords,当使用该选项的时候,ADO就不会创建记录集对象,不设置任何游标属性。数据提供者因为不需要认证行集合的属性而使性能得到优化。具体的例子如下: 中.国.站.长.站
con.Execute "insert into tbl values(fv1, fv2) ", , adExecuteNoRecords
对仅有一条的执行语句采用Connection::Execute的方法比使用Recordset::Open或者是Command::Execute的效果要好,因为ADO不保留任何命令状态的信息,因此执行性能就有所改进。
使用session/connection缓冲池 站.长.站
我们知道,数据库的打开和关闭是很消耗系统资源的。因此,连接池对基于多层的应用的性能有很大的提高,当你使用MDAC的时候,开发人员本身并不需要考虑对数据库连接的缓存,MDAC会自动处理它。连接池在两个层次上提供支持,OLE DB sessions和ODBC连接。如果你使用ADO的话,你的数据库连接会自动被OLE DB session缓冲池所缓存。如果使用ODBC的话,在ODBC数据源管理中新的连接缓冲池选项可以让你对ODBC缓冲进行设置,然后ODBC驱动程序会为你做剩下的事情。 中.国站长站
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




