[Lazarus] PostgreSQL database connection error

Michael Van Canneyt michael at freepascal.org
Wed May 28 21:38:57 CEST 2008



On Thu, 29 May 2008, peng wrote:

> Hellow everyone:
> 
> I  encountered an error when Postgresql in connection with Lazarus, as
> follows.
> 
> My environment is window xp Chinese , the installation of the Lazzrus 0.924
> and  Postgresql 8.3 . Lazarus can run and compile unit, the Postgresql can
> use pgadmin III visit. I created an data table "xiang" in the default
> database "postgres", including Chinese and English characters, Encoded by
> the uft8. and then copy the libpq.dll and other files to the Windows system
> directory. Next steps are:
> 
> 1, Lazarus creat a new form;
> 2, placing a TPQconnection components to the form;
> 3, setting the component attributes. For example:
> Hostname = localhost
> DatabaseName = postgres
> UserName = postgres
> Password = 1234
> Name = PQConnection1
> Params = "select * from xiang"

Params should be empty; this is not to enter a SQL statement.

To execute a query, drop a TSQLQuery on the form (SQLQuery1, for example), 
and set 
  SQLQuery1.SQL.Text:='select * from xiang';

and connect it to the connection component:

  SQLQuery1.Database:=PQConnection1;

Then drop a TSQLTransaction (SQLTransaction1) on the form.
Connect it to the database as well:
  SQLTransaction1.Database:=PQConnection1;

and finally connect the SQLQuery1 to the transaction:

  SQLQuery1.Transaction:=SQLTransaction1;

Now set 

  PQConnection1.Connected:=True;

and then

  SQLQuery1.Active:=True;

And then your query will be executed.

To use SQLDB, you need always 3 components:

1. A TSQLConnection component. 
   This controls the connection to the database.

2. A TSQLTransaction component. 
   This controls the transaction in which a query is executed.
   It is connected to the TSQLConnection.

3. A TSQLQuery component. 
   This executes queries.
   It is connected to the TSQLConnection component (the database)
   and the TSQLTransaction (the transaction context).

Michael.



More information about the Lazarus mailing list