当前位置:数据库 > SQLite >>

Delphi7 + sqlite3 怎么提高效率?

Delphi7 + sqlite3 我使用aslite3控件连接的,现在在向数据库中插入数据时速度很慢,怎么能提高呢? For Loop:= 0 To Count - 1 Do //这个循环大概100次,此循环大概就需要7,8秒 Begin ASQLite3InlineSQL1.Append ('INSERT INTO table1 (F1,F2,F3,F4,F5) VALUES (' + '''' + V1.Strings [Loop] + '''' + ',' + '''' + V2 + '''' + ',' + '''' + V3 + '''' + ',' + '''' + V4 + ''''+ ',' + IntToStr(V5) + ');'); End; ASQLite3InlineSQL1.SQL:= loc_obj_SQLs; ASQLite3DB1.ExecuteInlineSQL:= True; ASQLite3DB1.ExecStartTransaction(''); //网上找的代码说是事务处理,不知道正确不正确 ASQLite3DB1.SQLite3_ExecSQL(loc_obj_SQLs.Text); ASQLite3DB1.Commit
追问:版本不太清楚,但是没有BeginTrans这个方法,我用的ExecStartTransaction方法也是事物处理吧?经过试验了,插入一个表的记录(只运行上面一段代码)的时候,速度挺快。我使用同一个事件还插入另一个表记录,也就是说启用了两次事务也提交了两次事务,这个时候就很慢,请问又什么解决的办法吗?commit没在循环中
答案:Sqlite 插入之前,先开启事务, 最后 Commit 这样速度是没有加是的 N倍以上。。 
代码大概如下...不知道你用的哪个版本...请修改为相应的:
Connection1.BeginTrans;
for i := 0 to 100 do
begin
   //Insert into table...往数据表插入数据   
end;
Connection1.EndTrans;
其他:最后commit一次就行

上一个:sqlite3应该如何安装使用?
下一个:在C#里面 怎么设置Sqlite的相对的连接字符串?

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,