DELPHI XE5 与SQLITE

最近一次使用DELPHI做项目是使用DELPHI2009,为了访问本地数据库方便,使用ACCESS数据库,不需要安装驱动,(WINDOWS自带),但是ACCESS数据库的性能确实很糟糕,通过ADO连接,INSERT 1000条数据平均在1.5秒以上。

面前面临一个新的项目,本地数据库是继续用ADO,还是其他,成了一个问题。

近期比较流行的本地数据库是SQLite,想测试下SQLite的性能,和方便程度。

1.

DELPHI 和 SQLITE在度娘上提的最多的是通过ASQLite3DB组件进行连接。

http://www.2cto.com/kf/201010/76781.html

这套组件TSQLiteDatabase类和TSQLiteTable类,通过几个DLL访问SQLITE数据,研究发现TSQLiteTable类和DELPHI原生的TDataSet类完全无关,实在太原始了,无法和DELPHI原生的数据库组件连接,使用起来可能会很麻烦。

无意中发现了一个很好的SQLITE工具:

D:\TEST\delphixe5Test\sqllite\数据库工具\Personal 3

2.

有人提到可以使用ADO通过ODBC连接,

http://blog.csdn.net/zyq5945/article/details/6457741

 

网上下载了ODBC驱动,见:D:\TEST\delphixe5Test\sqllitetest\odbc,配置好后,

procedure TForm1.Button3Click(Sender: TObject);
var
  i: Integer;
  b: Long;
begin
  ADOConnection2.BeginTrans;
  b := getTickCount();
  for I := 0 to 1000 do
  begin
    adoquery2.SQL.Text := ‘insert into a(a) values (‘‘中‘ + Inttostr(i) + ‘‘‘)‘;
    adoQuery2.ExecSQL;
  end;
  ADOConnection2.CommitTrans;
  Edit1.Text := IntToStr(getTickCount() - b);

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ADOConnection2.ConnectionString := ‘Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="Driver={SQLite3 ODBC Driver};Database=C:\Users\hl\Desktop\aa.db;NoWCHAR=1;"‘;
  ADOConnection2.Open();
end;

运行效果还可以,平均insert 1000条在0.5秒左右,比ACCESS提高了三倍以上。

但是使用ODBC存在一个问题,就是必须安装ODBC驱动,网上没有找到如何将驱动直接打在我自己的程序安装包里,并且有可能存在部分机器上装不上ODBC导致无法连接本地数据库的问题,最后决定放弃ODBC连接。

3.

有人提到可以通过DBEXPRESS进行连接,折腾了半天,一直提示无法找到sqlite3.dll,找了很久也没找到解决方法,放弃。

4.

正在绝望时,看到http://redboy136.blog.163.com/blog/static/10718843220139206951165/

提到Delphi XE5中的新特性中增加了FireDAC对sqlite的支持。开始研究一下FIREDAC

网上对FIREDAC的介绍不多,还好找到了DELPHI的帮助文件。

测试:

D:\TEST\delphixe5Test\sqllitetest\FireDAC

procedure TForm1.Button1Click(Sender: TObject);
begin
  FDConnection1.Params.Clear;
  FDConnection1.Params.Add(‘Database=‘+ ExtractFilePath(Application.Exename) +‘aa.db‘);
  FDConnection1.Params.Add(‘DriverID=SQLite‘);
  FDConnection1.Connected := True;
end;

 

procedure TForm1.Button2Click(Sender: TObject);
var
  i: Integer;
  b: Long;
begin
  FDConnection1.StartTransaction;
  try
    b := getTickCount();
    for I := 0 to 1000 do
    begin
      FDQuery2.SQL.Text := ‘insert into a(a) values (‘‘‘ + Inttostr(i) + ‘‘‘)‘;
      FDQuery2.ExecSQL;
    end;
    FDConnection1.Commit;
  except
    FDConnection1.Rollback;
    raise;
  end;
  Edit1.Text := IntToStr(getTickCount() - b);
end;

INSERT 1000条竟然不到90毫秒,又无须安装驱动。太完美了。

DELPHI XE5 与SQLITE

时间: 2024-08-10 02:27:10

DELPHI XE5 与SQLITE的相关文章

Delphi XE5 常见问题解答

Delphi XE5 常见问题解答 有关于新即时试用的问题吗?请看看 RAD Studio 即时试用常见问答. 常见问题 什么是 Delphi? Embarcadero? Delphi? XE5 是易于学习的应用开发,适合构建针对Android 和iOS 的真正原生应用.并将它们快速应用到应用商店和企业的团队.使用相同的源代码库构建应用,无需牺牲应用质量.连通性或性能.通过原生Android 和iOS 支持,延伸到世界上最大规模可访问的移动市场. 有哪些版本可以使用,并且版本之间有什么区别? D

DELPHI XE5轻松输出到MacOsX

配置:MACOSX10.9.3 +XCODE5.1 + VBOX + WINXP + DELPHI XE 5UP2 配置步骤从略. 1.选择firemonkey desktop application 选择HD高清模式. 2.添加OSX平台, 写点代码 放一个BUTTON 添加事件. 还是最俗的HELLO XXXX 加上最傻的SHOWMESSAGE 这里是HELLO XE5 3.运行,在MAC端的下面的文件夹里:project1就是了. 小结:编译出来的MAC应用大小还是可以忍受的.DEBUG模

delphi XE5下安卓开发技巧

delphi XE5下安卓开发技巧 一.手机快捷方式显示中文名称 project->options->Version Info-label(改成需要显示的中文名即可),但是需要安装到安卓手机才可以(IOS的没有试过) 二.使用Sqllite存储中文 SqlLite中,字段类型要设置为nvarchar,保存时,有两种方式1)用Post时,对中文的字段要进行UTF8转换先用一个string变量转换一下(不转换的话Win32编译没有问题,Android编译时出错)str_temp:=UTF8ENCO

DELPHI XE5 跨平台 Form ShowModal 官方示例

Calling ShowModal as an Anonymous Method on All Platforms procedure THeaderFooterForm.btnPickClick(Sender: TObject); var dlg: TForm1; begin dlg := TForm1.Create(nil); // select current value, if available in the list dlg.ListBox1.ItemIndex := dlg.Lis

垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想

Delphi 是一个基本上被我遗忘的工具, 要不是在使用RapidSql , 我是收不到Embarcadero 公司发出的邀请来參加Delphi XE5的公布会的. 有人可能要问为什么是Embarcadero (名称很拗口)而不是Borland 开Delphi 公布会, 这是由于Borland那几年撑不下去, 把IDE工具打包成立了CodeGear 公司,已经被Embarcadero 收购了. 实际上十多年前以前參加过机械工业出版社主办的一个技术沙龙, 李维先生作为Borland 技术专家, 畅

Delphi XE5 for Android 启动无黑屏等待总结

Delphi XE5 for Android 启动无黑屏等待总结  从embarcadero官方技术论坛找了下参考资料,对黑屏处理应该来说有了相应的办法,并且这种办法具有很好的应用价值,因此做了个总结,Delphi XE5 无黑屏从本质上讲是使用Android 原生开发语言java ,编写的程序启动时首先加载java编写的SplashScreen的activity,然后在splashScreenActivity中启动delphi FireMonkey中的com.embarcadero.firem

Delphi XE5 常用功具与下载

1.Delphi XE5 正式版 http://altd.embarcadero.com/download/radstudio/xe5/delphicbuilder_xe5_win.iso http://altd.embarcadero.com/download/radstudio/xe5/delphicbuilder_xe5_upd1_win.iso 2. cnpack 助手工具 http://www.cnpack.org/download/unstable/CnWizards_1.0.1.6

DELPHI XE5

一直觉得DELPHI7之后,如果写WINDOWS桌面应用,没什么变化. 一直在痛苦,为什么DELPHI提供的控件那么丑陋,透明等什么功能都做的那么差. 一直在郁闷,新装的DELPHI都不带DEMO. 原来是我太OUT了. DELPHI 提供了firemonkey,完全独立于VCL的解决方案,彻底解决界面问题. DELPHI网站: http://docwiki.embarcadero.com/RADStudio/XE5/en/Installation_Notes_for_XE5 提供了大量EXAM

Delphi XE5 图解为Android应用制作签名

http://blog.sina.com.cn/s/blog_44fa172f0101nesq.html http://www.newasp.net/tech/72594.html Delphi XE5 图解为Android应用制作签名 要发布android应用,必须做签名的.看一下具体的操作步骤:1.进入Project-Options: 2.打开Options窗口,选择Provisioning,在这里,可以为目标平台选择签名文件,也可生成新的签名文件. 2.1 选择目标平台,可以为dubug或