我有个管理系统,所有ADOQUERY组件的 CursorLocation属性设置为 clUseClient,一直运行正常,我尝试全部设置为clUseServer, 系统不运行了,请大家帮忙。
我的做法是:
1. 连接数据库之前,先将ADOConnection的 CursorLocation设置为clUseServer
2. 调用窗体前,遍历窗体所有ADOQUERY组件,然后将其 CursorLocation设置为clUseServer
ADOQUERY.Open 失败
CursorLocation属性,指定数据库指针是指向客户端还是服务器端。类型TCursorLocation包含两个值:
1、cluseServer:使用服务器端的数据库指针,适用于数据量大的数据集。
2、cluseClient:使用客户端的数据指针的时候,数据将被下载到本地计算机上,并在本地进行操作。
3、设置CursorLocation:=cluseServer;指定使用服务器端游标,使用服务器端游标的好处是,程序对数据库的修改可以立即反映到服务器,而且,其他用户对数据库的操作也可以马上反映出来,但使用服务器端游标带来了高网络流量, 每一个数据访问都需要通过网络交换数据。
4、设置CursorLocation:=cluseClient;指定使用客户端的游标,ADO提供了客户端数据缓存处理机制,因此,ADO利用本地数据缓存以降低网络流量,虽然在数据访问灵活性上有所损失,但却大大提高了通过网络访问数据库的性能。
你的软件,使用服务器端的数据库指针,可能使用异步检索多个数据集,造成网络堵死。