呵,Delphi,又是这个家伙!没办法,之前搞Delphi,隔了N年后又回来搞Delphi,对她也是又爱又狠...,主要是用来用去,还是前女友好,用起来舒服、贴心且省事,你能想到的她全帮你想到了,没想到的她早已帮你准备好了....(当然那些太前端、时尚的,你就别去了,因为绝大部分都是没有这个控制能力的,东抄西拼也就是那么回事,看看就好了,好比现在的社会中很多高档时尚女人,哪怕是公交车,也你轮不到你,除非你过亿的身价且你有接盘侠的心态...)~搞技术人的YY,~!@#¥,大家懂得...,理解一下!
本系列主要是讲在Delphi下如何玩SQLite,百度了一下,好像还没有类似的系列教程(说教程也不严谨,或许系列文章较好些吧),不扯了,时间和精力有限,咱们直接脱光直奔主题吧...
一、Delphi下如何玩SQLite,总的来讲有两个思路,一是封装类(单元类)玩法,二是控件玩法。手段上也千奇百怪,有静态引用 obj 的,有动态链接 dll 的,还有把 dll 嵌入资源文件的,甚至还有用其他语言改写源码的,之前我就看过用 C# 重写的源码。如Delphi 官方的FireDAC就是在 Windwos 平台下默认使用了 sqlite3_x86.obj 或 sqlite3_x64.obj(FireDAC.Phys.SQLiteCli.pas), 而非 dll。具体大家要了解清楚。下面我就分类的简单说一说,后续的文章,分再分类分章进行一一讲述。
二、Delphi下使用封装类玩SQLite
比较著名和经典的SQLite封装类(单元类,非控件),可能要算是“A simple Delphi wrapper for Sqlite3(Update 10 February 2011)”,精简的2个pas源文件(SQLite3.pas、SQLiteTable3.pas),最后的“新版”还有一个sqlite3udf.pas(UDF,自定义函数),说是精简,其实基本上,读写SQLite3数据库是没有什么问题的,但有一个特别要注意的是,因为是精简的封装类,而不非控件,所以没有TDataset 和 databinding(好像有人进行了改造或升级,但意义不大),玩拖拉控件的人,可能就是不爽了,但确实是很好用,简单且快速。
或许是“A simple Delphi wrapper for Sqlite3”太著名了或许他不想背后默默的贡献代码给别人做嫁衣,最终在“A simple Delphi wrapper for Sqlite3”基础上,有个高手进行了改造、优化、精简,去掉了许多重复的功能(好像是去掉了Sqlite低版本的一些支持和兼容),变成了一个叫“Delphi SQLite Wrapper” ,最终版本为:V2.1.2 2012-08-21。
【Delphi SQLite Wrapper特性(其实两者都有很多的共性)】:
具体如何使用,后面我会专门的章节和例子进行讲解。
二、Delphi下使用控件玩SQLite
玩Delphi的人都知道,控件拖拉是特色,当然开发人员也慢慢的变傻、变懒了...,我想了一下,用玩SQLite的控件,主要有如下几个:
1)、UniDAC,这个东东,我想大家都知道吧,不懂得就自己百度了;
2)、FireDAC,呵,之前叫AnyDAC吧,后来给Delphi收购了,并且Delphi XE5 并入了 FireDAC, 第一印象非常好, 恐怕 dbExpress 等等都要靠边站了,据有关网友测试,FireDAC比ADO的速度快5~10倍,想一想,能让Delphi这个缺钱的主,进行收购和认可且集成Delphi XE5+,想想也肯定不一般。
Delphi 官方首次引入 Sqlite, 应该是在 XE3(提供了 System.Sqlite 单元,使用System.Sqlite.pas),不过需要 Sqlite.dll 的支持,接着有了 FireDAC 对 Sqlite 更完善的支持(它没有使用 System.Sqlite.pas),特别需要说明的是,在 Windwos 平台下默认使用了 sqlite3_x86.obj 或 sqlite3_x64.obj(FireDAC.Phys.SQLiteCli.pas), 而非 dll,再加上 Sqlite 本来就不需要其他部署,太方便了。
3)、SQLite Data Access Components (LiteDAC),是第三方收费的商业控件,是著名的Devart公司产品。SQLite数据访问组件(LiteDAC)是一个组件库,它提供了来自Delphi和C ++ Builder的 SQLite的本机连接,包括Community Edition,以及 Windows,Linux,macOS,iOS和Android上的Lazarus(和Free Pascal)。两个32位和64位的平台上。LiteDAC专为程序员开发真正的跨平台桌面和移动SQLite数据库应用程序而设计,无需部署任何其他库。目前源码版本为:SQLite Data Access Components (LiteDAC) V5.0.2_Full Sources
4)、DISQLite3控件,跟SQLiteSpy是同源产品, 是第三方收费的商业控件 。DISQLite3直接编译到应用程序的可执行文件中,故不需要Sqlite3.dll 的支持。也不用再担心不兼容、过时或缺少动态链接库。
DISQLite3是强大的,快速的和小的。完整的DISQLite3数据库引擎仅为您的应用程序增加了大约300 KB的代码空间——对于个人版本来说更是如此。这允许创建小到350 KB的完整数据库应用程序,甚至比SQLite3动态链接文件SQLite3 .dll还要小。
DISQLite3是基于流行的SQLite3数据库引擎的源代码库。因此,DISQLite3继承了SQLite3的所有功能。它像SQLite3一样打开、读取和修改SQLite3数据库文件。
用DISQLite3创建的数据库文件完全兼容SQLite3,包括非windows平台(支持Linux和Mac操作系统)。
目前源码版本为:DISQLite3 Pro 5.20.0 Full Source
5)、ZeosDBO/ZeosLib控件,当前最新版本为:zeosdbo-7.2.14(Last Update: 2022-09-27),支持MySQL, MariaDB, PostgreSQL, Interbase, Firebird, MS SQL Server, SAP Adaptive Server Enterprise and Adaptive Server Anywhere (previously Sybase), Oracle and SQLite for Delphi, FreePascal/Lazarus and C++ Builder.官方网址、官方论坛。
6)、还有一些其他的控件,但基本上有了上述的几个,非必要就懒得说了,数据库控件只是一个联接读写数据的工具而已,非业务逻辑,所以,我就懒得再介绍了,如有需要自己百度吧...