我的程序中有个数据库操作的地方,受到外界触发时候就进行操作存储;现在疑惑使用哪种方法比较节省资源?存储速度比较快?我使用的是ADOConnection1、ADOQuery1控件操作数据库
--------------------------------------------------------
【方法一】在程序启动时候:
AdoQuery1.SQL.Add('select * from Table1 ......');
AdoQuery1.Open在程序退出关闭时候:
AdoQuery1.Close而程序运行中受到触发时候进行新增操作
   AdoQuery1.Append;
   ADOQuery1.FieldByName('ABC').AsString:=T_A;
   ADOQuery1.UpdateBatch();
--------------------------------------------------------
【方法二】
仅仅在程序触发时候做如下操作
ADOQuery1.sql.clear;
ADOQuery1.sql.add('Insert into Table1 (......) Values (......)');
ADOQuery1.execsql;
ADOQuery1.close;--------------------------------------------------------
◆程序受到的触发有时候非常频繁,最多时候会每秒钟50次;
也就是说每秒要做50多次不同值的新增存储操作。
现在疑惑使用哪种方法比较节省资源?存储速度比较快?谢谢各位了!!

解决方案 »

  1.   

    这样另加一个模块确实是好,但是如果这个模块出现了bug,那么就会影响数据的存储;以上这两种方法哪种速度快一些??
      

  2.   

    没做过测试,我想【方法二】要好一点吧,只是把Close加到在程序退出关闭时候
    【方法二】
    仅仅在程序触发时候做如下操作
    ADOQuery1.sql.clear;
    ADOQuery1.sql.add('Insert into Table1 (......) Values (......)');
    ADOQuery1.execsql;
    //ADOQuery1.close;
      

  3.   

    你这两个方法都够次的。
    应该用第二个方法,但是得用参数查询,不要用
    ADOQuery1.sql.clear;
    ADOQuery1.sql.add('Insert into Table1 (......) Values (......)');
    ADOQuery1.execsql;
    应该在ADOQuery1里面把Insert into 事先写好,把数值变成参数:
    insert into .. Values (:val1,:val2,..)
    调用的时候,写
    ADOQuery1.Parameters[0].Value:=...;
    ADOQuery1.Parameters[1].Value:=...;
    ADOQuery1.execsql;