◆我的疑惑:请问哪个比较节省资源,存储速度比较快??
我的程序中有个数据库操作的地方,受到外界触发时候就进行操作存储;
现在疑惑使用哪种方法比较节省资源?存储速度比较快?
我使用的是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多次不同值的新增存储操作。
现在疑惑使用哪种方法比较节省资源?存储速度比较快?谢谢各位了!!
[解决办法]
没做过测试,我想【方法二】要好一点吧,只是把Close加到在程序退出关闭时候
【方法二】
仅仅在程序触发时候做如下操作
ADOQuery1.sql.clear;
ADOQuery1.sql.add( 'Insert into Table1 (......) Values (......) ');
ADOQuery1.execsql;
//ADOQuery1.close;
[解决办法]
你这两个方法都够次的。
应该用第二个方法,但是得用参数查询,不要用
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;