这个问题还真不是三言两语能说明白的,我给你举个例子吧
假设table1有100条记录,在客户端执行:
select * from table1
而客户段的cachesize为10那么对于不同的游标会有不同表现
Server-side Cursor:
将1000条数据存于ado缓存或数据源缓存中,只将10条发送给客户端,当客户端要使用第11笔缓存时,由于客户端没有第11笔,客户端的游标会向服务器端的ado要求传送下10笔Client-side Cursor:
将1000条数据全部传送给客户端ado缓存,客户端的游标向应用程序提供数据由此看出
服务器端游标要球保持“持续的”连接,而客户端游标在取得数据后即可切断联系弄清这两个问题,你2、3问题就解决了在ado架构中,connection 主要负责连接数据源,recordset负责存取和维护从数据源取得的数据,command是recordset的一个分支
假设table1有100条记录,在客户端执行:
select * from table1
而客户段的cachesize为10那么对于不同的游标会有不同表现
Server-side Cursor:
将1000条数据存于ado缓存或数据源缓存中,只将10条发送给客户端,当客户端要使用第11笔缓存时,由于客户端没有第11笔,客户端的游标会向服务器端的ado要求传送下10笔Client-side Cursor:
将1000条数据全部传送给客户端ado缓存,客户端的游标向应用程序提供数据由此看出
服务器端游标要球保持“持续的”连接,而客户端游标在取得数据后即可切断联系弄清这两个问题,你2、3问题就解决了在ado架构中,connection 主要负责连接数据源,recordset负责存取和维护从数据源取得的数据,command是recordset的一个分支
command可以返回recordset,也可以不返回recordset
在不同的语言中有一些差别
不论是在客户端还是在服务器端,修改时都是先修改缓存中的记录,最后执行rs.update时,才把数据的修改结果提交给数据库,所以无论是什么游标,只要不是前向只读的,有键集,就可以修改。