最近一次使用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的更多相关文章

  1. Delphi XE5 常见问题解答

    Delphi XE5 常见问题解答 有关于新即时试用的问题吗?请看看 RAD Studio 即时试用常见问答. 常见问题 什么是 Delphi? Embarcadero? Delphi? XE5 是易 ...

  2. Delphi XE5中的新增内容

    Delphi XE5中的新增内容 Delphi XE5是所有Delphi开发人员的必须备升级,并且是来自Embarcadero的获奖的.多设备应用开发解决方案的最新版本.使用Delphi XE5的新特 ...

  3. Delphi XE5 支持的Android 版本

    Delphi XE5 已经支持Android应用开发.  那XE5支持Android的哪些版本呢?Delphi编译的APP能部署到Gingerbread (2.3.3-2.3.7), Ice Crea ...

  4. Delphi xe5 手机开发经验(新手级别)

    Delphi xe5 手机开发经验(新手级别) http://diybbs.zol.com.cn/1/34037_699.html http://www.delphitop.com/html/jiqi ...

  5. delphi XE5下安卓开发技巧

    delphi XE5下安卓开发技巧 一.手机快捷方式显示中文名称 project->options->Version Info-label(改成需要显示的中文名即可),但是需要安装到安卓手 ...

  6. DELPHI XE5开发WEB服务器及安卓手机客户端

    Xe5开发web服务端和手机客户端 ------------------------------------- Delphi xe5作为最新开发利器,就类似如当年的DELPHI,功能强大,快发速度快, ...

  7. Delphi XE5 如何与其他版本共存

    如果你想使用Delphi诸如XE4.XE3.XE2.XE之类的版本跟Delphi XE5共存的话,在cglm.ini中简单修改两行就行啦. 找到Delphi XE5的安装根目录C:\Program F ...

  8. Delphi XE5 与其他版本共存

    来源于http://www.board4allcz.eu 作者是gateway 如果你想使用Delphi诸如XE4.XE3.XE2.XE之类的版本跟Delphi XE5共存的话,在cglm.ini中简 ...

  9. Delphi XE5教程12:注释和编译器指示字

    内容源自Delphi XE5 UPDATE 2官方帮助<Delphi Reference>,本人水平有限,欢迎各位高人修正相关错误!也欢迎各位加入到Delphi学习资料汉化中来,有兴趣者可 ...

随机推荐

  1. 启动 apache2.4 出现 invalid command order 问题 【由于 PHP 访问权限 403 问题引起】

    由于网站出现  403 禁止访问,所以修改了 httpd.conf 文件的权限如下 <Directory /> Options FollowSymLinks AllowOverride N ...

  2. table中某一个tr边框样式设置

    <html> <head> <style type="text/css"> table{ width:500px; } table tr td{ ...

  3. C++ 画星号图形——空心矩形(核心代码记录)

    int mi=(int)a; int mj=(int)b; ;i<mi;i++) { ;j<mj;j++) { ||i==mi-) cout<<"*"; | ...

  4. 百钱买百鸡问题 php版本

    /* * 百钱买百鸡问题 * * 我国古代数学家张丘建在<算经>一书中曾提出过著名的“百钱买百鸡”问题,该问题叙述如下:鸡翁一,值钱五:鸡母一,值钱三:鸡雏三,值钱一:百钱买百鸡,则翁.母 ...

  5. C# 程序实现功能目录

    1.根据年月日获取 星期几  http://www.cnblogs.com/liwp/p/5943226.html 2.json对象转换为泛型集合 http://www.cnblogs.com/liw ...

  6. Android开发使用TotalControl调试遇到的问题(备注)

    背景:Android开发,使用TotalControl控制手机进行调试. 过程:Eclipse调试一直正常,某天下午突然提示:无法启动ADB.exe,请确认是否在对应的路径下. 怀疑是自己程序写的有问 ...

  7. Mybatis与Spring整合,使用了maven管理项目,作为初学者觉得不错,转载下来

    转载自:http://www.cnblogs.com/xdp-gacl/p/4271627.html 一.搭建开发环境 1.1.使用Maven创建Web项目 执行如下命令: mvn archetype ...

  8. (转)我如何利用前端技术得到 XXOO 网站的 VIP

    网页如图,这里只是说明整个网站的一些技术点,所以不该看的地方我都打上马赛克了,让我们揭开这些网站的整个前端工作原理首先刚进去的时候显示一堆乱七八糟的东西,点进去其中一个页面,下面各种虚假评论,然后每隔 ...

  9. 编写bat(批处理文件)的优势

    以前编写java小程序打成jar包运行的时候非常麻烦,在dos环境先cd进入那个文件夹,再运行java -jar *.jar,自从看了bat以后,发现.bat真的是dos下面运行的好帮手. @echo ...

  10. HTML标签marquee实现滚动效果

    html标签 - <marquee></marquee>可以实现多种滚动效果,无需js控制.使用marquee标记不仅可以移动文字,也可以移动图片,表格等.只需要在<ma ...