在一个局域网环境下,应用程序调用服务器上sql库的存储过程来更新数据库
方式1
用StoredProc1连接服务器上的updateMan存储过程更新
方式2
Query1.close;
Query1.sql.clear;
query1.sql.add('exec uupdateMan');
query1.open;那种方式的效率高呢?如何来提高应用程序连接服务器数据库的速度。现在简直慢死了。更新一条记录要十几秒!!!!!!!!!!!

解决方案 »

  1.   

    10几秒是不可能的,检查其它原因吧,绝对不是ADO连接方式的问题
      

  2.   

    除非你 uupdateMan 作了一个极其庞杂的数据库操作比方查了N多的报表,修改了M多的记录,.....
      

  3.   

    你说的真是不可能,最多也就1秒钟.看看你的uupdateMan到底干了什么
    再看一下你的网络是不是通畅.
      

  4.   

    uupdateMan 过程也没有什么复杂的操作。正常的情况下也看不出来慢。但服务器上有时候反应就突然慢下来,例如打开一个资源管理器都反应半天,就在这个时候客户端应用程序再对数据库操作就慢的离谱了。最奇怪的是添加的记录返回结果对,但事后去库里查看的时候反而找不到记录。
    存储过程如下:ALTER             PROCEDURE sf_User_Change_Insert

    @ID varchar(5)
    )
    AS
    declare @tran_Update varchar(32)
    declare @ErrorCharge int
    declare @ErrorUserInfo int 
    declare @Error varChar(100)select @tran_Update='my_tran_Update'
    begin transaction @tran_Update   declare @count int
    select @count=count(*) from userInfo 
    where ID=@ID
    if @count<=0 
    begin insert Table1 ......--插入新记录操作
    set @ErrorCharge=@@Error
    end
            
            update table2 --更新表2记录
    set @ErrorUserInfo=@@Errorif @ErrorCharge=0 and @ErrorUserInfo=0 
    begin
    commit transaction my_tran_Update
    set @Error='成功'
    end
    else
    begin
    set @Error='失败';
    Rollback TRAN my_tran_Update
    endSelect @Error as Error在应用程序里判断Error的返回值
    返回成功打印,返回失败出提示。
    而现在就在服务器反应慢的时候,返回成功并打印。但事后到数据库里查看没有插入的记录。
    晕了.................................................
      

  5.   

    SQL数据库最好用ADO来处理
    楼主可参看李维写的那本《Delphi 5.X Ado/mts/com+高级程序设计篇》,里面对ADO有详细的介绍,应该对你有用...