当前位置:文档之家› Lazarus+ZeosDBO+FireBird开发者指南

Lazarus+ZeosDBO+FireBird开发者指南

Lazarus+ZeosDBO+FireBird开发者指南
Lazarus+ZeosDBO+FireBird开发者指南

LZF

Lazarus+ZeosDBO+FireBird开发者指南

孙晓刚编著

2012年8月

本书作者,多年从事基于Pascal系开发工具的软件开发工作,对C,PHP,Java等均有不同程度掌握。喜欢接触新鲜事物,热爱软件开发工作。现就职于四川卓易软件开发有限公司。参与或独立开发了文档管理,短信发送,商业系统等多种不同种类的软件系统。对软件开发工作有一定的独到见解和实际动手能力。业余时间喜欢玩游戏,陪儿子玩耍。

本书的例子都是作者亲自编写demo验证通过的,有不足之处还请指正。

您可以如下方式联系作者。

https://www.doczj.com/doc/9a11906786.html,帐号steven

QQ1565498246

版权所有,孙晓刚,作者保留所有权利,未经授权严禁商业使用本书部分或全部内容。

本书部分资料来自网络,已注明出处、作者,版权归相关个人或组织所有。

本书有源码,如有需要可以联系作者。

特别建议

开源软件、开源社区对软件开发做出了不可估量的贡献,特别是很多免费的,造成了百花齐放的美好景象,但有的开源软件逐渐回归商业,也是不得已而为之。有句话说得好:“吃的是草,挤出来的是血!”。特别是商业应用,你大把赚钱,却给开源社区、作者没有任何支持,这毕竟不是长久之计。请支持你所使用开源社区、软件的开发者。特别是本书提到的几个组织、论坛。

序言

目前市面上没有任何一本完整的书,介绍Lazarus,Firebird这两个优秀的开发工具,同时还有一个作为他们之间桥梁的开发套件ZeosDBO,也没有任何完整的中文开发指南,本书以这三种开发套件为主线,顺带介绍Lazarus的组件,Firebird的其他工具。

什么是Lazarus?Lazarus发音:拉轧勒斯。他是一个高稳定的软件集成开发环境,使用Object Pascal语言,内核是FreePascal这个GNU下很成熟的编译器,他是一个高效的RAD工具,特别适合有Delphi开发或其他RAD基础的用户。开发工具越来越便宜,这是不争的事实。现在的很多开发工具都在免费,比如Eclipse,Apache,Mysql,Tomcat等等,Lazarus就是和他们类似的一个开发工具,他实现了所见所得的快速开发,并且已经有许多开发者基于她进行商业程序开发,涵盖多个领域。目前为止,已经推出1.0式版本,1.1的每日编译版本,真正稳定,笔者使用从来没有崩溃过,在0.9.1版本以前是不可想像的。

Firebird的前身是开源的Interbase,有百万用户的实际应用基础,是其他开源数据库无法比拟的。Interbase是Borland购买的Ashton-Tate公司的产品,而Ashton-Tate公司又是买的Groton Database Systems。说到这里不得不说说Interbase的作者Jim Starkey这个伟大的程序员,也是Groton Database Systems

公司的创始人,正是他独创性的开发出Interbase的(a)多代体系结构(从Wiki上查,多代体系结构是另外两位创造的理论体系,但Interbase或DEC公司是首先实现的,但当时就是1981年Jim正在这个公司开发那个数据库,可见他是首先实现这个多代体系数据库)(b)单文件实现事务日志(库和日志在一起),(c)首个支持BLOB的数据库引擎,有类型的事件通知,数组和触发器,没有偷学任何一家公司的体系。第一个版本在1977年开发完成叫做datarieve Version1,是支持PDP-11计算机的。这位大师后来的杰作为MySQL AB实现Falcon项目基于Netfrastructure 这个引擎,其实就是采用Firebird的体系,但后来离开MySQL AB,现在从事云端数据库研发并且领导Firebird数据库的开发。因此,实际上Firebird数据库引擎从1981年就开始商用,有大量用户使用过,经过多年名称变化,他是开源版本的名称,从1.0开始就有大量用户使用,主要的用户在欧美,俄罗斯。因为中文资料比较少,这个优秀的开发工具在国内许多人并不认识。现在发展到了2.5

版本,可以支持多处理器,大量客户端连接,是一款高性能的数据库引擎。关于Firebird 的TB 级的测试可以看https://www.doczj.com/doc/9a11906786.html,/articles/item104。关于Firebird 的历史可以看"浴火重生的Firebird",https://www.doczj.com/doc/9a11906786.html, 有此文,已经收录到附录,版权归原作者所有。

ZeosDBO 是连接FireBird 和Lazarus 之间的桥梁,是lazarus 的开源数据库访问组件,非常优秀,可以访问大多数数据库,他也支持Delphi,并支持大多数常见数据库。

本书适合的读者是具备一定的Pascal 语言基础,SQL 语言基础的程序员或编程爱好者。

选择这三种套件的关键是,三者均免费,跨平台,统称为LZF,下面是这三种开发套件的优点列表。这么强大的开发系统,您还犹豫什么?跟我一起来学习吧。

项目Lazarus Firebid ZeosDBO 价格免费免费免费使用协议GPLv2IPL GPLv2跨平台性多种平台多种平台多种平台当前版本 1.0RC2 2.5.1

6.6.6stable 特色

极像Delphi 稳定

已经包含chm 帮助轻量,高效,完整特有MGA 多代体系

唯一单文件实现日志

唯一实现嵌入式支持触发器,存储过程的数据库

跨库,跨操作系统,跨语言(delphi,,lazarus,.ne t)

第三方支持

许多控件在转移中

Ibexpert,FlameRobin,

Maestro 等许多管理界面,多种访问库。

EhLib 等多种库支

持,完全兼容原其他Dataset 用户使用情况

大量商业程序正在使用,有图有真相。

许多商业应用程序,

秘密在使用。许多用户使用,从比较老的版本开始。

目录

第一章Hello,World.

第二章Hello,Firebird.

第三章Hello,ZEOSDBO

第四章交叉表

第五章CRUD

第六章乱码问题

第七章POS--卖场终端系统的demo

第八章主细表

第九章IBExpert

第十章好大的EXE

第十一章Lazarus的绿化

第十二章FireBird的分发

第十三章Firebird在其他编程语言应用

第十四章Lazarus在其他操作系统平台的应用第十五章我想换个数据库

第十六章我想开发一个组件

第十七章lazarus的报表

第十八章lazarus的网络通信库

第十九章CodeTyphon

第二十章我想改变IDE的风格

第二十一章调试程序

第二十二章JSON库使用

第二十三章XML处理

第二十四章脚本语言

第二十五章声音处理

第二十六章嵌入web浏览器

第二十七章图表

第二十八章单元测试

第二十九章报表输出为PDF文件

第三十章脚本编辑器

第三十一章跨平台游戏开发引擎

第三十二章DataModule成也萧何败也萧何

第三十三章Unit单元风格

第三十四章命名

第三十五章数据库设计

第三十六章Lazarus和Delphi的异同

第三十七章Free Spider开发Web后端

第三十八章Lazarus的synedit编译

第三十九章Lazarus的第三方组件调试

第四十章Lazarus GUI程序的控制台调试窗口

第四十一章Lazarus的乱码问题2

第四十二章GB18030,UNICODE,UTF-8

第四十三章RichMemo编辑器

第四十四章为什么是Firebird,不是MySQL

第四十五章国际化--I18N与Lazarus

第四十六章synEdit字符渲染宽度BUG

第四十七章Pascal与C语言

第四十八章Lazarus的多层应用开发

附录A相关社区

附录B Lazarus是否做好编写商业软件的准备了?附录C浴火重生的Firebird(HTML版)

第一章Hello,World.

Lazarus从2010年左右进入一个高速发展期,以前使用总是局限于硬件速度,随着现在硬件速度的提升,他自身的代码优化,技术的进步,终于发展到一个稳定版本,一般来说,开源软件的1.0往往已经非常成熟。网络上有大量用户讨论使用心得,并且互相交换技术文档。

我们知道当前最流行的几大开发技术:

1.PHP胜在简单,使用者众多,资料丰富;

2.JAVA胜在跨平台,能完成前端,后端功能;

3.Flex,胜在代码简洁,可实现丰富的RIA;

4.iOS,Android开发,移动用户群的庞大;

5.Delphi,最快的RAD,最优美的语法,数据结构,算法的基础语言;

6.Mysql胜在对php的结合,以及社区开发的多种特性;

我们再来看他们的缺点:

1.PHP不容易实现客户端应用,客户端应用永远有大需求;

2.JAVA太跨平台,比本地化Native代码速度慢,无法实现小应用;

3.Flex已经放弃linux平台,跨平台特性正在丧失;

4.iOS不允许非ObjectC应用,Android依靠java,高性能应用要用JNI;

5.Delphi,只支持Windows平台,现在添加了iOS,可是还不成熟;

6.Mysql的缺点也很明显,内部引擎太多,特别是isam引擎的多文件,特别容易损坏。

比较了这些,那么lazarus使用在什么领域?

1.尊重知识产权的软件公司;

2.除B/S模式,RAD,多媒体,文字处理,游戏等各个领域;

3.打算编写跨平台应用,windows,linux,iOS,WinCE,单片机都可以用lazaru.

........不再一一列举。

哪里下载?

Lazarus可以在https://www.doczj.com/doc/9a11906786.html,

ZeosLib可以在https://www.doczj.com/doc/9a11906786.html,

FireBird可以在https://www.doczj.com/doc/9a11906786.html,

我们下载Lazarus1.0RC2,FireBird2.5.1分别安装,(安装方法就略过),我们后面来说zeoslib的安装.

安装完毕后打开Lazarus,会自动新建一个工程,我们拖动standard组件面板上的Tlabel组件,放在form1上,并将其caption设置为Hello,world.然后按键盘上F9,就可以看到我们的成果。

我们可以看到,开发环境布置非常合理,Delphier是不是觉得眼熟呢?

那么我们下一章来学习FireBird数据库的基本操作吧。

第二章Hello,Firebird.

首先我们需要创建一个数据库,假设我们的数据库引擎FireBird安装为默认的。我们来用IBexpert连接数据库.首先运行IBexpert,选择菜单Database->Create Database,在出现的窗口填

Server Remote

Server Name127.0.0.1

protocol tcp/ip

Database d:\demo.fdb

User Name sysdba

Password masterkey(这是初始密码,以后可以修改)

如图

然后点击OK.

然后将其注册到Ibexpert里面进行管理。如图

然后我们在主界面选择菜单,Database->New Table,在上面表名栏输入tabel1,然后在下面添加2个字段.如图

然后我们关闭

这个表。自动就会提示是否保存,我们点击commit提交到数据库。

然后我们回到delphi去。我们来创建一个新的Lazarus工程来保存我们的新程序。选择菜单Project->New Project,我们看到在弹出的窗口上有多个我们可以创建lazarus应用,FreePascal应用,单独的LPR主程序(比如写DLL),甚至Apache 等插件也会出现在这里(根据你安装的第三方组件).我们选择默认的Application,然后点击OK.一个新的应用模板出现了,我们将他保存。

我们随便加点数据。

我们在保存位置看一下

发现有多个文件,分别什么意思呢?

LPR--lazarus的主程序

LPI--XML格式编译配置等信息

LPS--XML维持单元名称等信息

RES--资源文件

LFM--Form格式和delphi DFM一样PAS--Pascal单元文件

然后我们在新form放几个控件

一个TIBConnection名字IBConnection1属性

DatabaseName D:\DEMO.FDB HostName127.0.0.1

Password masterkey

UserName sysdba

然后令connected为true

放一个TSQLTransaction,使其active为true

一个dataset,类是TSQLQuery名字SQLQuery1属性

Database IBConnection1

Transaction SQLTransaction1

Sql select*from table1

Active true

一个datasource控件,名字默认datasource1 Dataset sqlquery1

再添加datagrid,属性datasource为datasource1一个按钮,双击按钮,代码是

sqlquery1.Active:=true;

然后我们等什么?F9啊。

现在你已经会用Lazarus编写一个最简单的Firebird数据库程序了。

但是,我们难免会用到多个数据库,比如跨库操作,有过ADO编程的同学也许有体会,当我们用不同数据库连接组件,多少会有不同之处,特别是要移植一个程序到另外一个数据库,将会十分困难。有没有一个组件可以兼容所有数据库,改一下属性就转换数据库了呢?有,ZeosLib就是这样一个组件,将来你的软件要升级为网络版,或改数据库引擎,只需要修改几个属性。

下一章我们就来见识一下这个控件的魅力。

第三章Hello,ZEOSDBO

首先我们需要安装ZEOSDBO,我们选择稳定版(Stable)6.6.6,将其解压缩放在某个位置,比如lazarus安装目录的components下面,在lazarus版本,这个控件不需要安装其他lpk,只安装其中一个zcomponent.lpk就可以了。

我们在lazarus菜单选择package->open package file(*.lpk),然后找到我们的zcomponent.lpk,注意,lazarus的控件安装最好一个一个的安装,如果安装失败,我们还可以回到老版本,默认自动重新编译IDE时,会保留一个老版本lazarus.exe。而lazarus的控件安装也非常简单,不需要设置各种路径,就在打开的窗口,点击编译(compile),然后选择user>>这个按钮,下面菜单,install,会提示我们是否重新编译IDE,一路选择yes,编译完毕,IDE会自动重新启动,我们就可以在组件面板看见Zeos组件。如图

注意有的组件可能需要修改一下源码,对于delphi老手来说不是问题,这个组件就需要修改因为lazarus核心源码的改变,修改一点点。

首先是zclasses.pas第60行

//function QueryInterface(const IID:TGUID;out Obj):HResult;stdcall;

修改为

function QueryInterface({$IFDEF

FPC_HAS_CONSTREF}constref{$ELSE}const{$ENDIF}iid:tguid;out obj): longint;{$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};

第192行

//function TAggregatedObject.QueryInterface(const IID:TGUID;out Obj):HResult;修改为

function TAggregatedObject.QueryInterface({$IFDEF

FPC_HAS_CONSTREF}constref{$ELSE}const{$ENDIF}iid:tguid;out obj): longint;{$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};

是为了和objpash.inc保持一致;

另外一个文件zabstractRODataset.pas的2975行也是因为核心变化,需要Basefieldtype增加2个字段的隐射.

将ftFixedWideChar,ftWideMemo添加到后面;

好了,控件安装完毕。我们就开始我们的新探索吧。

首先我们新建一个工程,demo3.

拖一个控件tzconnection,名zconnection1,属性设置为:

Database d:\demo.fdb

Hostname127.0.0.1

Password masterkey

Username sysdba

Protocol firebird-2.0

Port3050

Transaction tiReadCommitted

如图,你可以看到许多数据库都支持,而且里面代码确实写得很漂亮,真正支持得好。

提示没有dll.我们将firebird数据库连接dll,fbclient.dll放在应用一起。

一个TZquery,名称zquery1属性

Connection connection1

Sql select*from table1

一个datasource,名datasource1属性Dataset ZQuery1

一个Dbgrid,属性

Datasource datasourc1

一个Button,代码

zquery1.Active:=true;

然后F9吧

我们可以看到

相关主题
文本预览
相关文档 最新文档