您的位置:首页 > 编程语言 > Delphi

Delphi 操作SQL 插入一万条数据 三种方式速度测试

2013-05-21 12:06 513 查看
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
btn1: TButton;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
ADOCommand1: TADOCommand;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure btn1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
procedure ExecSql(SqlSentence:String);
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ExecSql(SqlSentence:String);
begin
with ADOQuery1 do
begin
Close;
SQL.Clear();
SQL.Add(SqlSentence);
ExecSQL;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var I:integer;
SqlStr,MsgStr:string;
ID,Name:string;
Time:Cardinal;
begin
// 一条一套插入1万条数据 耗时大约86秒
Time:=GetTickCount;
for i:=1 to 10000 do
begin
Name:= QuotedStr('easyboot'+InttoStr(i));
SqlStr:=Format(' insert into MyTest (Name) values (%s)',[Name]);
ExecSql(SqlStr );
end;
Time:=GetTickCount-Time;
MsgStr:=Format('Time %d ',[Time]);
ShowMessage(MsgStr);
end;

procedure TForm1.btn1Click(Sender: TObject);
var I,x:integer;
SqlStr,MsgStr:string;
ID,Name:string;
Time:Cardinal;
begin
// 一次插入1万条数据 耗时大约19秒
Time:=GetTickCount;
for i:=1 to 10000 do
begin
Name:= QuotedStr('easyboot'+InttoStr(i));
SqlStr:=SqlStr+Format(' insert into MyTest (Name) values (%s)  ',[Name]);

end;
ExecSql(SqlStr );
Time:=GetTickCount-Time;
MsgStr:=Format('Time %d ',[Time]);
ShowMessage(MsgStr);
end;

procedure TForm1.Button2Click(Sender: TObject);
var I,x:integer;
SqlStr,MsgStr:string;
ID,Name:string;
Time:Cardinal;
begin
// 一次插入1万条数据 耗时大约4秒
Time:=GetTickCount;

for i:=1 to 10000 do
begin
Name:= QuotedStr('easyboot'+InttoStr(i));
SqlStr:=SqlStr+ Format(' insert into MyTest (Name) values (%s)  ',[Name]);

end;
ADOConnection1.Open;
ADOConnection1.BeginTrans;
ADOCommand1.CommandText:=SqlStr;
ADOCommand1.Execute();
ADOConnection1.CommitTrans;

Time:=GetTickCount-Time;
MsgStr:=Format('Time %d ',[Time]);
ShowMessage(MsgStr);
end;

end.

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: