Autor: Fernando Rafael Filipuzzi
E-mail: fernando_6867@yahoo.com.ar
Este documento es una guía mínima (por ahora) para implementar Lazarus con PostgreSQL. Aún está en construcción.
La instalación se realizó en Debian Lenny y se utilizó los repositorios de Debian Sid para la instalación de Lazarus.
1.1 Instalación de PostgreSQL
usuario@host:~$ aptitude search postgres ... p postgresql - object-relational SQL database (supported p postgresql-8.3 - object-relational SQL database, version 8. ... usuario@host:~$su password:
En password va la contraseña del root.
host:/home/usuario#aptitude install postgresql-8.3 host:/home/usuario#aptitude search pgadmin p pgadmin3 - graphical administration tool for PostgreSQL p pgadmin3-data - graphical administration tool for PostgreSQL - documenta p phppgadmin - web-based administration tool for PostgreSQL host:/home/usuario#aptitude install pgadmin3 host:/home/usuario#logout usuario@host:~$
1.2 Instalación de Lazarus
usuario@host:~$su password: host:/home/usuario#aptitude search Lazarus ... p lazarus - IDE for Free Pascal to create (graphical and console) applications p lazarus-doc - IDE to create (graphical and console) applications with Free p lazarus-ide - IDE to create (graphical and console) applications with Free p lazarus-src - IDE to create (graphical and console) applications with Free ... host:/home/usuario#aptitude install lazarus lazarus-ide
host:/home/usuario#aptitude search fpc p fpc - Free Pascal Compiler - Meta Package ... host:/home/usuario#aptitude install fpc host:/home/usuario#logout usuario@host:~$
1.3 Configurar postgresql
Configuración para acceder a la base de datos local.
usuario@host:~$su password: host:/home/usuario#nano /etc/postgresql/8.3/main/pg_hba.conf
En este archivo agregar lo siguiente:
local nombre_de_una_base_de_datos nombre_de_algun_usuario password local nombre_de_una_o_de_otra_base_de_datos nombre_de_algun_o_de_otro_usuario password
Para que todos los usuarios tengan acceso se puede reemplazar a nombre_de_algun_usuario por all, de igual forma para las bases de datos. Ejemplo:
local all all password
2.1- Ingresar
usuario@host:~$ su host:/home/usuario# su - postgres postgresql@host:/home/usuario$
2.2 Crear usuario
postgresql@host:/home/usuario$ psql postgres=#CREATE USER nombre_de_usuario postgres-#WITH PASSWORD 'unacontraseña' postgres-#CREATEDB postgres-#CREATEUSER postgres-#;
Con CREATEDB le da los privilegios a ese usuario de crear base de datos y con CREATEUSER le da privilegios de crear otros usuarios.
Para salir del psql:
postgres-#\q;
2.3 Crear la base de datos
postgresql@host:/home/fernando$ createdb nombre_de_la_base_de_dato_a_crear
2.4 Crear una tabla
postgresql@laboratorio:/home/fernando$psql -U nombre_del_usuario nombre_de_la_base_de_dato_creada Contraseña para usuario nombre_del_usuario: Bienvenido a psql 8.3.7, la terminal interactiva de PostgreSQL. Digite: \copyright para ver los términos de distribución \h para ayuda de órdenes SQL \? para ayuda de ó rdenes psql \g o punto y coma («;») para ejecutar la consulta \q para salir nombre_de_la_base_de_dato_creada=#
Puede ocurrir el error dado en el punto 5.1
2.5 Crear una tabla en baseDato
nombre_de_la_base_de_dato_creada=# CREATE TABLE tabla( nombre_de_la_base_de_dato_creada(#id serial, --Indice de la tabla nombre_de_la_base_de_dato_creada(#nombre varchar(50), --nombre del empleado nombre_de_la_base_de_dato_creada(#fecnac date -- fecha de nacimiento del empleado nombre_de_la_base_de_dato_creada(#);
luego
nombre_del_usuario=# \dt
Listado de relaciones
Schema | Nombre | Tipo | Dueño |
public | tabla | tabla | usuario |
(1 fila)
Se ven las tablas creadas con sus propietarios. Si se ingreso con psql -U usuario baseDato
entonces la tabla creada será del usuario.
nombre_de_la_base_de_dato_creada=# SELECT * from tabla; id | nombre | fecnac ----+--------+-------- (0 filas)
se observa que no fue ingresada ninguna fila a tabla
.
2.6 Insertarle valores
nombre_de_la_base_de_dato_creada=# insert into tabla(id,nombre,fecnac) values (nextval('tabla_id_seq'), 'marcelo', '11-01-50'); nombre_de_la_base_de_dato_creada=# INSERT INTO tabla (id,nombre,fecnac) values (nextval('tabla_id_seq'), 'luciana', '11-01-79'); nombre_de_la_base_de_dato_creada=# SELECT * from tabla; id | nombre | fecnac ----+------------------+------------ 1 | marcelo | 2050-01-11 2 | luciana | 1979-01-11 (2 filas)
Crear un proyecto nuevo, agregarle al formulario y configurar los siguientes siguientes componentes:
TPQCoonection:
TSQLQuery:
TSQLTransaction:
TDataSource:
TDBGrid:
Quedando así
La configuración se puede hacer en el siguiente orden:
1- TPQCoonection:
DataName := nombre_de_la_base_de_dato_creada UserName := nombre_del_usuario_creado Password := password_del_usuario_creado Hostname := nada o localhost, en MySQL localhost
2- TSQLTransaction:
Active := True Database := PQConnection1
3- TSQLQuery:
DataBase := PQconnection1 SQL := SELECT * FROM nombre_tabla_creada SQLTransaction := SQLTransaction1 Active := True
una vez inicializado SQLTransaction se puede ver en SQL/resultados los datos de la tabla consultada.
4- TDataSource:
DataSet := SQLquery1
5- TDBGrid:
DataSource := Datasource1
Luego de configurar todos los componentes, cargar un select en el query y hacerle active a este, genera el mensaje de error.
La solución:
usuario@host:~$su password: host:/home/usuario#su - postgres postgresql@host:/home/usuario$psql base_de_dato_creada base_de_dato_creada-#GRANT CONNECT ON DATABASE base_de_dato_creada TO usuario_creado; base_de_dato_creada-#\q postgresql@host:logout host:/home/usuario#:logout usuario@host:~$
Luego de hacer activate al PQConnection.
La solución, consiste en hacer un enlace simbólico:
usuario@host:~$su password: host:/home/usuario#ls /usr/lib/libpq* libpq.so.5 libpq.so.5.1
Entonces tomamos la libpq.so.5.1 para lo siguiente:
host:/home/usuario#ln -s /usr/lib/libpq.so.5.1 /usr/lib/libpq.so host:/home/usuario#logout usuario@host:~$
ver configuración de postgresql
Aprendiendo SQL con PostgreSQL; La versión en pdf
Inicialización de Postresql 8.3 en Debian Lenny; La versión en pdf
Manual del usuario de PostgreSQL
Página oficial de Lazarus; La documentación
Foros:
Otros: