Delphi FireDAC 下的 Sqlite(一) 前言

很长时间没静下心来写博客了, 现在回来, 是 Delphi 不断地进步让我感动、振奋.

Delphi XE5 并入了 FireDAC, 第一印象非常好, 恐怕 dbExpress 等等都要靠边站了.

让我最高兴地是 FireDAC 对 Sqlite 的支持!

优秀的 Sqlite 早就有很多 Delphi 的包装(http://www.sqlite.org/cvstrac/wiki?p=SqliteWrappers, 从 https://code.google.com/ 等还能搜到更多).

有静态引用 obj 的, 有动态链接 dll 的, 还有把 dll 嵌入资源文件的, 甚至还有重写的(刚刚见过一套用 C# 重写的源码).

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/Delphi/

Delphi 官方首次引入 Sqlite, 应该是在 XE3(提供了 System.Sqlite 单元), 这好像只是为了支持 DBX, 也需要 Sqlite.dll 支持.

现在好了, 有了 FireDAC, 有了 FireDAC 对 Sqlite 更完善的支持(它没有使用 System.Sqlite.pas), 特别需要说明的是, 在 Windwos 平台下默认使用了 sqlite3_x86.obj 或 sqlite3_x64.obj(FireDAC.Phys.SQLiteCli.pas), 而非 dll, 再加上 Sqlite 本来就不需要其他部署, 太方便了.

从此, 不管是写本地程序、移动程序(Sqlite 是 Andriod 的系统数据库)、网络程序我都将使用 Sqlite, 恐怕在需要内存表、ini 文件、甚至是定义某种文件格式时, 我都会想到它.

所以, 一定要把它学精学透!

估计学完它至少会记下 20 篇博客, 如果你也想和我一起学习, 快安装 XE6 吧(XE5 我没装过, lsuper 搞的 Embarcadero.Delphi.XE6.Lite.v9.x 应该更方便安装, 这里一并谢过!).

希望尽快学完这个, 接下来还要学学 Intraweb(它应该是成熟了)和移动开发, 说到移动开发向大家求助下 "升级 Andriod 系统的方法", 我几年前购买的 三星 GALAXY 大平板手机(港行), 系统是 Andriod 2.1, 刚好够不着; 谁弄过, 拜托教我下; 如果有不升级也能用于测试的方法则更好.

安装 XE6 后, 先用 FireDAC Explorer 浏览下官方提供的 FDDemo.sdb 吧(实际路径: C:\Users\Public\Documents\Embarcadero\Studio\14.0\Samples\data\FDDemo.sdb):

Author:cnblogs 万一

时间: 2024-12-03 21:21:07

Delphi FireDAC 下的 Sqlite(一) 前言的相关文章

Delphi FireDAC 下的 Sqlite(九) 关于排序

SQLite 内部是按二进制排序, 可以支持 ANSI; FrieDAC 通过 TFDSQLiteCollation 支持了 Unicode 排序, 并可通过其 OnCompare 事件自定义排序. 下面的例子, 测试了这两种排序的不同. 可把下面代码直接贴在空白窗体上, 以快速完成窗体设计: object DBGrid1: TDBGrid Left = 0 Top = 0 Width = 297 Height = 199 Align = alLeft DataSource = DataSour

Delphi FireDAC 下的 Sqlite(二) 第一个例子

为了方便测试, 我把官方提供的 C:\Users\Public\Documents\Embarcadero\Studio\14.0\Samples\data\FDDemo.sdb 复制了一份到 C:\Temp\FDDemo.sdb. {新建一个 VCL Forms Application, 然后添加如下控件(建议按 Ctrl + . 后用键盘输入添加):} TFDPhysSQLiteDriverLink // 用于驱动自动连接; 不同数据库各对应一个: TFDPhys****DriverLink

Delphi FireDAC 下的 Sqlite(十二) 备忘录

该话题的继续延伸主要就是 SQL 的语法了, 草草收场的原因是现在的脑筋已经进入了 IntraWeb 的世界. 相关备忘会随时补充在下面: //连接多个数据库的参考代码: FDConnection1.ExecSQL('ATTACH ''c:hr.sdb'' AS hr'); FDConnection1.ExecSQL('ATTACH ''c:cust.sdb'' AS cust'); FDQuery1.Open('select * from "Orders" o ' + 'left j

Delphi FireDAC 下的 Sqlite(十一) 批量提交 SQL 命令的测试

可把下面代码直接贴在空白窗体上, 以快速完成窗体设计: object DBGrid1: TDBGrid Left = 0 Top = 0 Width = 265 Height = 338 Align = alLeft DataSource = DataSource1 TabOrder = 0 TitleFont.Charset = DEFAULT_CHARSET TitleFont.Color = clWindowText TitleFont.Height = -11 TitleFont.Nam

Delphi FireDAC 下的 Sqlite(十) 使用 R-Tree 搜索

R-Tree 主要用于三维空间的搜索, 据说这种搜索算法非常之快, 哪怕百万条记录也是眨眼间的事! SQLite 支持 1-5 维, FireDAC 也提供了 TFDSQLiteRTree 控件以方便定义回调函数. 为了简单, 我用二维表进行了成功的测试. 建立 R-Tree 表(索引)时需要使用特定语法, 譬如: FDConnection1.ExecSQL('CREATE VIRTUAL TABLE MyRTreeTable USING rtree(Id, minX, maxX, minY,

Delphi FireDAC 下的 Sqlite(八) 自定义函数

Sqlite 本身没有这个功能, FireDAC 通过 TFDSQLiteFunction 增加了该功能; 尽管通过某些 SQL 语句或通过视图也可以达到类似效果, 但函数会更灵活些. 本例先建了一个成绩表, 然后通过两个 TFDSQLiteFunction 实现了 "总分" 与 "平均分" 的计算. 你可以复制下面文本框中的内容, 然后直接往窗体上贴, 以快速完成窗体设计: object DBGrid1: TDBGrid Left = 8 Top = 88 Wid

Delphi FireDAC 下的 Sqlite(七) 备份、优化和事务(Transaction)

用 TFDSQLiteBackup 控件, 两三行代码即可完成 Sqlite 数据库的备份. procedure TForm1.Button1Click(Sender: TObject); begin {先初始化目标} FDConnection1.DriverName := 'SQLite'; FDConnection1.Params.Add('Database=C:\Temp\FDDemo_Back.sdb'); //如果不指定这个路径, 就是备份到内存 FDConnection1.Open(

Delphi FireDAC 下的 Sqlite(六) 加密

主要就是设置 TFDConnection 的两个链接参数: Password, NewPassword, 非常简单. const dbPath = 'C:\Temp\SQLiteTest.sdb'; {建立加密数据库, 密码是 mm123}procedure TForm1.FormCreate(Sender: TObject); const strTable = 'CREATE TABLE MyTable(Id integer, Name string(10), Age byte)'; //Id

Delphi FireDAC 下的 Sqlite(五) 数据的插入、更新和删除

先在空白窗体上添加: TFDConnection.TFDPhysSQLiteDriverLink.TFDGUIxWaitCursor.TFDQuery.TDataSource.TDBGrid(并在设计时关联好). 你也可以复制下面文本框中的内容, 然后直接往窗体上贴, 以快速完成以上的添加过程: object DBGrid1: TDBGrid Left = 16 Top = 88 Width = 361 Height = 329 DataSource = DataSource1 TabOrder