使用BDE连接SYBASE,服务器WINDOWS 2003,采用的12.5的数据库,服务器是采用cp936的集合,客户端也是12.5的客户端
同一台机器,采用SQLSSC32.dll时候速度很慢,需要4秒才能读完600条数据;
采用SQLSYB32.dll速度快,几乎立即响应,但是一旦SQL语句有错误就会直接退出应用程序,例如我插入一条重复的数据,程序立马直接退出,无法捕捉例外。。
想问一下是为什么,这是什么情况,如何解决呢????还想问一下,SYBASE 11的客户端默认是不支持CP936的字符集,能否添加对CP936的字符集的支持呢???

解决方案 »

  1.   

    一旦SQL语句有错误就会直接退出应用程序:应该是你的程序有问题吧
      

  2.   

    换ADO试试,会不会是程序问题啊
      

  3.   

    可能是我没有描述清楚这个问题:
    相当于是这样的,一张表600条数据,执行一个TQuery,查询出所有字段,这个过程在两种DLL下程序执行都是正确,但是BDE是用SQLSSC32.dll时候速度很慢,需要4秒才能读完600条数据;采用SQLSYB32.dll的时候,速度很快,在0.1秒左右;但是如果执行一个错误的SQL语句,delete from abcd,abcd表在数据库中没有,用SQLSSC32.dll,try{}catch{}可以捕捉到这个执行的例外,但是用SQLSYB32.dll的时候程序就直接退出了。
    软、硬件环境完全一样,同一台服务器,同一个客户端。
      

  4.   

    查询语句很简单,就是 SELECT 的单表查询,很纠结;我感觉和BDE或者是SYBASE客户端是有关系的,否则不可能说换一个DLL,就会提高速度,但是纠结的是问题在哪里了。
      

  5.   

    那就换ADO试试,ADO比较通用,两者都测试下就一目了然原因在哪了
      

  6.   

    程序已经写了一大半了,以前都是在本机上写的,所以不好换了
    今天用用ODBC试了一下,BDE通过ODBC连接,速度还可以,就是不知道采用ODBC驱动的时候,有什么设置上的区别吗???
    还有擦可用SQLSYB32.dll的时候,执行delete from aabb这样的一个SQL语句,在delphi自带的SQL Explorer也会直接退出。
      

  7.   

    以前做过,也是Sybase12.5的,也是通过 BDE<--ODBC进行连接配置的。
    ODBC配置时字符集是一个重要的点,其他没有太多的注意事项。
    服务器上 Sybase12.5好象在性能上要进行配置,具体不记得了。
      

  8.   

    用sql anywhere吧,万级数据也在几秒内
      

  9.   

    问题是现在我最困惑的,是为什么同样的程序,同样的机器,用SQLSSC32.dll,SQLSYB32.dll会有这么大的速度的差别,SQLSSC32.dll是采用的SYBASE CTLIB,SQLSYB32.dll采用的是DBLIB。