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

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 中设置属性:

  • transaction - 相应 SQLTransaction 对象
  • Database name - 数据库名称
  • HostName - 主机名
  • UserName - 用户名
  • password - 密码
  • params - 其他连接参数,如果数据库使用的端口不是默认的 5432,则需要在该属性中填写 port=对应的端口

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

8.在 SQLQuery 中设置属性:

  • transaction - 相应 SQLTransaction 对象
  • database - 相应 PQConnection 对象
  • SQL(类似于“ select * from anytable”)

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;

备注:

  • 在windows环境下,Lazarus 0.9.12、PgSQL 8.3.1上测试
  • 在部分linux环境下,Lazarus 0.9.12、PgSQL 8.0.x 上测试

安装和错误:

  • 在Lazarus的测试版本中,“text”和“numeric”类型的字段存在错误
  • 我使用了char fixed size、int和float8,没有问题
  • 有时重启Lazarus可以解决愚蠢的错误...
  • 出现一些错误后,事务仍处于活动状态,应手动停用
  • 在交易提交之前,Lazarus所做的更改当然是不可见的
  • 集成调试器似乎有问题(至少在windows中),有时在IDE之外运行可能有助于发现错误
  • 在linux中,某些错误消息会打印在控制台中,在命令行中运行程序,有时会有一些额外有用的调试信息
  • 对于错误:“无法加载Postgresql客户端。是否已安装(libpq.so)?”
  • Add the path to seach libpq* from the PostgreSQL installation.
  • In linux add the path to the libpq.so file to the libraries section in your /etc/fpc.cfg file. For example : -Fl/usr/local/pgsql/lib
  • In windows, add these libs anywhere in the Path environment variable or project dir
  • I windows, I copied all the DLLs in my C:\Program Files\PostgreSQL\8.1\bin dir to another dir in the PATH
  • Or add this postgres\bin dir to the path
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)

程序运行效果

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页