Delphi7 + sqlite3 怎么提高效率?
Delphi7+sqlite3我使用aslite3控件连接的,现在在向数据库中插入数据时速度很慢,怎么能提高呢?ForLoop:=0ToCount-1Do//这个循环大概...
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 展开
我使用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 展开
展开全部
Sqlite 插入羡樱册兄宏之前,先开启事务, 最后 Commit 这样速度是没有加是颂行的 N倍以上。。
代码大概如下...不知道你用的哪个版本...请修改为相应的:
Connection1.BeginTrans;
for i := 0 to 100 do
begin
//Insert into table...往数据表插入数据
end;
Connection1.EndTrans;
代码大概如下...不知道你用的哪个版本...请修改为相应的:
Connection1.BeginTrans;
for i := 0 to 100 do
begin
//Insert into table...往数据表插入数据
end;
Connection1.EndTrans;
更多追问追答
追问
版本不太清楚,但是没有BeginTrans这个方法,我用的ExecStartTransaction方法也是事物处理吧?
追答
你最好把源代码相关部分完整的帖一下.你上面帖的代码看出来是启用了事务的...但为什么效率还低,可能在其他代码上.
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最后commit一次就行
追问
commit没在循环中
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询