2.Lazarus和PostgreSQL2.1官方资料

【以下内容翻译自官方文档】

https://wiki.freepascal.org/Lazarus_Database_Tutorial/zh_CN#Lazarus_.E5.92.8C_PostgreSQL

如下图所示:

plsql首次登录数据库选什么(11.Lazarus数据库编程2.Lazarus和PostgreSQL)(1)

【翻译】

针对Lazarus 0.9.12及以后版本,连接到PostgreSQL数据库,本地或远程,使用TPQConnection组件。

正确安装后,请执行以下步骤:

1.从 SQLdb 选项卡放置 PQConnection

2.从 SQLdb 选项卡放置 SQLQuery

3.从 SQLdb 选项卡放置 SQLTransaction

4.从 DataAccess 选项卡放置 DataSource

5.从 DataControls 选项卡放置 DBGrid

6.在 PQConnection 中设置属性:

7.检查 SQLTransaction 是否已自动更改为指向 PQConnection,即 SQLTransaction 的 Database 属性是否为对应的 PQConnection 对象

8.在 SQLQuery 中设置属性:

9.在 DataSource 对象中,使用 SQLQuery 对象设置 DataSet 属性

10.在 DBGrid 中,填写 DataSource 对象作为数据源对象

11.将所有内容都设置为连接和活动,DBGrid 应该在设计时填充。TDBText和TDBEdit似乎有效,但(对我来说)它们只显示数据。

如果要更改数据库中的内容,我使用以下代码直接调用DB引擎:

try sql:= 'UPDATE table SET setting=1'; PQDataBase.Connected:=True; PQDataBase.ExecuteDirect('Begin Work;'); PQDataBase.ExecuteDirect(sql); PQDataBase.ExecuteDirect('Commit Work;'); PQDataBase.Connected:=False; except on E : EDatabaseError do MemoLog.Append('DB ERROR:' sql chr(13) chr(10) E.ClassName chr(13) chr(10) E.Message); on E : Exception do MemoLog.Append('ERROR:' sql chr(13) chr(10) E.ClassName chr(13) chr(10) E.Message); end;

备注:

安装和错误:

2.2示例

示例:简单地展现一个 PostgreSQL 数据库中某个表的数据。

数据准备:

create table d_students1 ( student_id varchar(64) primary key, name varchar(16), sex boolean, birthday date, department_id int4, 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);

界面设计如下图所示:

plsql首次登录数据库选什么(11.Lazarus数据库编程2.Lazarus和PostgreSQL)(2)

窗体组件及其属性设置:

组件

属性

PQConnection1

DatabaseName

demodb

HostName

127.0.0.1

UserName

postgres

Password

***

Params

port=9432

Transaction

SQLTransaction1

Connected

True

KeepConnection

True

LoginPrompt

False

SQLTransaction1

Database

PQConnection1

Active

True

SQLQuery1

Database

PQConnection1

Transaction

SQLTransaction1

SQL

select * from d_students1

Active

True

DataSource1

DataSet

SQLQuery1

DBGrid1

DataSource

DataSource1

Align

alClient

Options

dgRowSelect=True

设置好后运行程序,显示如下:

plsql首次登录数据库选什么(11.Lazarus数据库编程2.Lazarus和PostgreSQL)(3)

程序运行效果

,