plsql首次登录数据库选什么(11.Lazarus数据库编程2.Lazarus和PostgreSQL)
【以下内容翻译自官方文档】
https://wiki.freepascal.org/Lazarus_Database_Tutorial/zh_CN#Lazarus_.E5.92.8C_PostgreSQL
如下图所示:
【翻译】
针对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
示例:简单地展现一个 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);
界面设计如下图所示:
窗体组件及其属性设置:
组件 |
属性 |
值 |
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 |
设置好后运行程序,显示如下:
程序运行效果
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com