我做的客户端是用adoconnection和 很多adoquery来访问数据库,由于服务器和客户端在不同的局域网,所以用了花生壳,但客户说有时候网速慢的时候,程序就会死得很难看,做这样的程序要注意什么呢 ?客户说他朋友用的网页版程序就没这个问题!!好愁人啊,怎么能让程序不死呢??  

解决方案 »

  1.   

    用三层 socketconnection
    ADO网络慢时很容易断
      

  2.   

    网页在网速慢的时候也会死的很难看,最后是无效页面。
    不过优化一下SQL语句及表的性能是很有必要的,建议从索引和sQL语句下手。
      

  3.   

    花生壳 我以前用过,挺好的
    优化SQL是肯定要的
    网络慢,将连接时间设长点
      

  4.   

    如果不能改变网络,暂时又不能用三层的话,那只能注意访问数据库的次数,获取数据的数量。
    例如:
    1、如果利用了某个基础信息表,数据量也不是太大,初始化时一次取过来,然后在内存里查询,避免每次都查询一次数据库。
    2、尽量避免使用事务长时间对数据库进行操作,这样别的客户端都死定了。一次获取的数据量不要太大。比如一次获取上万条。
    3、数据集组件的属性设置
      比如:AdoQuery(或AdoDataSet),如果是作为更新的话,可以设置为批处理更新Locktype=ltBatchOptimistic),
      如果是作为查询使用的话,可以设置CursorLocation=clUseServer,CursorType=ctOpenForwardOnly,LockType=ltReadOnly,并且如果数据集中没有BCD类型的字段(SQl server中Numeric(18,0)这种类型)可以设置EnableBCD=False;如果有疑问,可以继续发帖讨论!!
      

  5.   

    把Locktype=ltBatchOptimistic 是很好的方法!
    但是要注意自己的代码,楼主的AdoQuery太多了这样做也是一个问题
      

  6.   

    优化你的sql语句,最好采用数据库编程。
      

  7.   

    以前用过,提几点
       1.客户端和服务器两者的网络,请不要使用不同的代理商 (如:电信和网通,铁通等)
       2.确保网络的通畅(最起码相互ping 时,不能有丢包的现象,不然处理复杂业务的时候,会死的很难看)
       3.优化Sql(什么时候都需要的)
       
      

  8.   

    开发程序有几方面要注意的:
    1、前端打开数据集时,不要全部打开,比如你打开某一个单据,里面涉及多个数据集,不要全部打开,需要的时候才打开,不需要的时候不要打开。
    2、如果要打开数据集时,尽量读取少量的数据,比如打开某个单据时,不要把这个单据的所有数据全部读取,比如读取今天的数据或者前5天的数据等等,这个要看实际情况。
    3、在做后台数据库统计时,你写的sql语句尽量要优化,比如不要用游标、不要用多层嵌套select语句,尽量不要用like语句、适当利用索引。做好这三点,会比较快的。如果要想更快的话,可以利用windows的远程桌面,就是所有程序放在服务器上,在前端利用远程桌面进入操作,这样会更快。