「11.Lazarus数据库编程」3.Lazarus和FireBird

「11.Lazarus数据库编程」3.Lazarus和FireBird

3.Lazarus 和 FireBird

Firebird 是一款开源的免费数据库服务器,它是在 Borland 开源的 Interbase 6 数据库基础上开发的,已经使用和开发了几十年。它包括对SQL语句(例如 INSERT…RETURNING )、存储过程、触发器等的丰富支持。如果想扩展 Firebird 已经很广泛的函数列表,可以在 FreePascal 中为服务器编写已编译的UDF(用户定义函数)库。

Firebird 数据库一旦建立,只需要很少的DBA手工工作,非常适合小型企业使用或嵌入式使用。如果进行适当的调整,它可以扩展到TB级,虽然 PostgreSQL 可能是这种大型环境的更好选择。

Firebird 提供嵌入式(基于文件)和客户端服务器数据库,无需更改 FPC/Lazarus 中的一行代码即可使用。如果用作嵌入式数据库,它提供了比 SQLite 更丰富的 SQL 支持,以及到客户机服务器数据库的无缝迁移,尽管 SQLite 本身是一个非常强大的嵌入式数据库。

FPC 的 SQLDB 中对 Firebird 的支持相当好,与 PostgreSQL 的支持水平相当。

3.1Lazarus 连接 FireBird 数据库

在 Lazarus 中,连接 FireBird 数据库所用到的组件为 TIBConnection, 是 Interbase/Firebird 专用连接组件。

同时也会使用到 TSQLTransaction 和 TSQLQuery 组件,这两个组件是 SQLdb 连接所支持的所有数据库都会使用到的两个组件。

TIBConnection 组件的主要属性

  • HostName – FireBird 数据库服务器主机名或 IP 地址
  • Port – 端口号
  • DatabaseName – 数据库名,数据库服务器上数据库文件的路径
  • UserName – 用户名
  • Password – 密码
  • Connected – 与数据库服务器建立连接

3.2 基本示例

示例:在窗体上展现一张数据表中的数据。数据如下:

create table d_students1 ( student_id varchar(64) primary key, name varchar(16), sex boolean, birthday date, department_id integer, total_score decimal(9,1));INSERT INTO d_students1(student_id, name, sex, birthday, department_id, total_score)VALUES(‘x-20210001’, ‘张三’, true, ‘2000-05-06’, 1, 520);INSERT INTO d_students1(student_id, name, sex, birthday, department_id, total_score)VALUES(‘x-20210002’, ‘李四’, true, ‘2000-03-09’, 1, 539);INSERT INTO d_students1(student_id, name, sex, birthday, department_id, total_score)VALUES(‘x-20210003’, ‘周五’, false, ‘2001-09-10’, 2, 528);INSERT INTO d_students1(student_id, name, sex, birthday, department_id, total_score)VALUES(‘x-20210004’, ‘赵六’, true, ‘2000-08-28’, 1, 517);INSERT INTO d_students1(student_id, name, sex, birthday, department_id, total_score)VALUES(‘x-20210005’, ‘姜七’, false, ‘2000-07-06’, 2, 547);INSERT INTO d_students1(student_id, name, sex, birthday, department_id, total_score)VALUES(‘x-20210006’, ‘贺八’, true, ‘2000-11-01’, 2, 533);

3.2.1 项目与所需组件

首先,创建一个新Lazarus项目。

在组件面板的SQLdb控件页拖拉一个TIBConnection, 一个 TSQLTransaction 和一个 TSQLQuery 组件到窗体。

TIBConnection: 是 Interbase/Firebird 专用连接组件。

TSQLTransaction 和 TSQLQuery: SQLdb 连接所支持的所有数据库都会利用到这两个组件。

显示数据: 利用 Data Controls 页的 TDBGrid 组件。先添加 Data Access 页内一个 TDatasource 控件后才能将 TDBGrid 连接到数据库。

界面设计如下图所示:

3.2.2组件连接关系

连接组件:如果使用对象检查器是非常简单的,也可以使用代码来实现。

1、设置 IBConnection1 的 Transaction 属性指向 SQLTransaction1,这会使得 SQLTransaction1 的 Database 属性自动变更为 IBConnection1;

2、设置 SQLQuery1 的 Database 属性指向 IBConnection1,Lazarus 会自动添加 Transaction 属性值;

3、设置 Datasource1 的 Dataset 属性指向 SQLQuery1;

4、设置 DBGrid1 的 Datasource属性指向 Datasource1。

组件及属性设置:

组件

属性

IBConnection1

Transaction

SQLTransaction1

SQLTransaction1

Database

IBConnection1

SQLQuery1

Database

IBConnection1

Transaction

SQLTransaction1

Datasource1

Dataset

SQLQuery1

DBGrid1

Datasource

Datasource1

3.2.3连接到数据库

设置 IBConnection1 的数据库连接属性,如下表:

组件

属性

IBConnection1

HostName

127.0.0.1

Port

3050

DatabaseName

E:workspace_of_lazarusDEMODB.FDB

UserName

SYSDBA

Password

***

Connected

True

KeepConnection

True

SQLTransaction1

Active

True

SQLQuery1

SQL

SELECT * FROM d_students1

Active

True

DBGrid1

Align

alClient

Options

dgRowSelect=True

运行程序,如下图所示:

3.3 FireBird 嵌入数据库

  • Win平台下的Firebird

只要将嵌入式 Firebird 的 fbembed.dll 改名为 C/S 结构 Firebird 所用的 fbclient.dll,Lazarus程序就可以连接 C/S 结构 Firebird(一般是安装在另一台机器上或者是你的开发机上)。

此外,您也可以复制数据库文件到你的应用程序目录,再运行应用程序,既不需安装数据库服务器,也不需要设置,就能使用嵌入式Firebird来直接连接到数据库文件。

这为一类用户带来了极大的方便:想给终端用户部署数据库应用程序,但又不想自找麻烦地去安装服务器,免除了烦琐的部署步骤:如检查是否已经安装了服务器,数据库版本是否是正确,防火墙是否开启等。

  • Linux/OSX/Unix平台下的Firebird

Linux/OSX 平台下应该也能够找到方法来进行嵌入式部署。

具体的 FireBird 嵌入式数据库,我会专门安排一个章节来讲解。

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
上一篇 2022年6月12日 21:10
下一篇 2022年6月12日 21:10

相关推荐

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息