我做的客户端是用adoconnection和 很多adoquery来访问数据库,由于服务器和客户端在不同的局域网,所以用了花生壳,但客户说有时候网速慢的时候,程序就会死得很难看,做这样的程序要注意什么呢 ?客户说他朋友用的网页版程序就没这个问题!!好愁人啊,怎么能让程序不死呢??
解决方案 »
- 请大家介绍一本网络编程的书给我?
- 请教大家关于在delphi中防止程序多次运行的方法???
- 自己定义的类型文件,如何加密?
- vb.net 的toolbar 问题:给整个toolbar加上背景图片,不仅仅是toolbar的按钮
- 需软件工程师加盟(上海徐汇,Delphi,MSSQL,一年以上经验)
- 開啟子窗口 的疑問(在d7中)
- Teechart6
- 数据库恢复的问题?
- 紧急请教:程序运行时,出现错误:DCOMConection控件的commandtext不允许改变是则那么回事
- 急:谁有Dx(DevelopExpress)的控件包,带源码的,送分300!
- 求教:我在XP系统下开发的程序在2000里不能运行
- delphi2007 老说找不到 adortl100 怎么办??
ADO网络慢时很容易断
不过优化一下SQL语句及表的性能是很有必要的,建议从索引和sQL语句下手。
优化SQL是肯定要的
网络慢,将连接时间设长点
例如:
1、如果利用了某个基础信息表,数据量也不是太大,初始化时一次取过来,然后在内存里查询,避免每次都查询一次数据库。
2、尽量避免使用事务长时间对数据库进行操作,这样别的客户端都死定了。一次获取的数据量不要太大。比如一次获取上万条。
3、数据集组件的属性设置
比如:AdoQuery(或AdoDataSet),如果是作为更新的话,可以设置为批处理更新Locktype=ltBatchOptimistic),
如果是作为查询使用的话,可以设置CursorLocation=clUseServer,CursorType=ctOpenForwardOnly,LockType=ltReadOnly,并且如果数据集中没有BCD类型的字段(SQl server中Numeric(18,0)这种类型)可以设置EnableBCD=False;如果有疑问,可以继续发帖讨论!!
但是要注意自己的代码,楼主的AdoQuery太多了这样做也是一个问题
1.客户端和服务器两者的网络,请不要使用不同的代理商 (如:电信和网通,铁通等)
2.确保网络的通畅(最起码相互ping 时,不能有丢包的现象,不然处理复杂业务的时候,会死的很难看)
3.优化Sql(什么时候都需要的)
1、前端打开数据集时,不要全部打开,比如你打开某一个单据,里面涉及多个数据集,不要全部打开,需要的时候才打开,不需要的时候不要打开。
2、如果要打开数据集时,尽量读取少量的数据,比如打开某个单据时,不要把这个单据的所有数据全部读取,比如读取今天的数据或者前5天的数据等等,这个要看实际情况。
3、在做后台数据库统计时,你写的sql语句尽量要优化,比如不要用游标、不要用多层嵌套select语句,尽量不要用like语句、适当利用索引。做好这三点,会比较快的。如果要想更快的话,可以利用windows的远程桌面,就是所有程序放在服务器上,在前端利用远程桌面进入操作,这样会更快。