Cómo desarrollar una aplicación mediante Lazarus 1.0.8 con acceso a servidor de base de datos PostgreSQL 9 en sistema operativo Microsoft Windows 8. Para ello utilizaremos los componentes gratuitos ZeosLib. Explicamos paso a paso y con capturas de pantalla cómo instalar Lazarus, cómo instalar ZeosLib y cómo acceder a una base de datos PostgreSQL todo ello en 64 bits, incluida la aplicación desarrollada.
- Instalar Free Pascal Lazarus x64 en Windows 8 x64.
- Instalar componentes gratuitos ZeosLib en Lazarus para acceso a SQLite, PostgreSQL, Oracle, MySQL, Firebird, SQL Server, Sybase, Interbase.
- Librerías DLL para acceso a PostgreSQL desde aplicación desarrollada con Lazarus y ZeosLib en Windows 8.
- Desarrollar aplicación Lazarus de 64 bits con acceso a bases de datos PostgreSQL x64.
- AjpdSoft Acceso PostgreSQL con Lazarus en Windows 8 en funcionamiento.
- Anexo.
- Solución al error: None of the dynamic libraries can be found or is not loadable: libpq.dll.
- Solución al error no hay una línea en pg_hba.conf para «xxx», usuario «xxx», base de datos «xx», SSL inactivo.
- Código fuente completo en Lazarus de la aplicación AjpdSoft Acceso PostgreSQL con Lazarus en Windows 8.
Instalar Free Pascal Lazarus x64 en Windows 8 x64
A continuación mostramos cómo instalar Lazarus en un equipo con sistema operativo Microsoft Windows 8. Lazarus es una herramienta de desarrollo rápido de aplicaciones (RAD) basada en el lenguaje de programación Object Pascal, es similiar en su IDE a Delphi. La gran ventaja de Lazarus es que puede instalarse y generar aplicaciones para Windows, Linux y Mac OS X y es software libre.
Para instalar Lazarus accederemos con un navegador web al sitio oficial de Lazarus para descargas:
Descargaremos el fichero de instalación de Lazarus que se ajuste a nuestras necesidades (arquitectura de procesador x32/x64 y sistema operativo Windows, Linux, Mac OS X). En nuestro caso descargaremos Lazarus para Windows x64.
Una vez descargado el fichero (lazarus-1.0.8-fpc-2.6.2-win64.exe) lo ejecutaremos como administradores (pulsando con el botón derecho del ratón sobre el fichero y seleccionando «Ejecutar como administrador» en el menú emergente):
Si tenemos activado UAC (Control de cuentas de usuario) de Windows 8 nos mostrará un aviso para ejecutar el fichero, pulsaremos «Sí»:
Seleccionaremos el idioma de instalación de Lazarus y pulsaremos «Aceptar»:
Se iniciará el asistente para instalar Free Pascal Lazarus 1.0.8 en Windows 8, pulsaremos «Siguiente»:
Indicaremos la unidad y carpeta de instalación de Lazarus y pulsaremos en «Siguiente»:
A continuación marcaremos los componentes de Lazarus a instalar, seleccionaremos «Instalación Completa»:
Indicaremos la carpeta del menú Inicio de Windows donde se añadirán los accesos directos para Lazarus, por ejemplo «Lazarus»:
Indicaremos si queremos crear un acceso directo en el escritorio marcando «Crear un icono en el escritorio». Puesto que es la primera vez que instalamos Lazarus en el equipo W8 no será necesario marcar la opción «Eliminar todos los archivos de configuración de usuario de instalaciones anteriores». Pulsaremos «Siguiente»:
El asistente para instalar Lazarus en W8 nos mostrará el resumen de las opciones seleccionadas, pulsaremos «Instalar»:
Una vez finalizada la instalación de Lazarus el asistente nos mostrará una ventana indicando que el proceso ha concluido de forma satisfactoria. Pulsaremos «Finalizar»:
Pulsando el botón «Inicio» W8 nos mostrará el menú de Inicio metro, donde aparecerá el acceso directo para ejecutar «Lazarus», pulsaremos sobre él:
Ya podremos disponer de este entorno de desarrollo en Free Pascal para realizar aplicaciones para Windows con entorno gráfico de forma gratuita:
Instalar componentes gratuitos ZeosLib en Lazarus para acceso a SQLite, PostgreSQL, Oracle, MySQL, Firebird, SQL Server, Sybase, Interbase
Si bien Lazarus incluye sus propios componentes para acceso a bases de datos (MySQL, Firebird, PostgreSQL, Sybase, Oracle, ODBC, SQLite) utilizaremos ZeosLib en su última versión ya que incorpora más opciones avanzadas y soporte para acceso a más motores de base de datos de forma nativa (SQLite, PostgreSQL, Oracle, MySQL, Firebird, SQL Server, Sybase, Interbase, ASA, FreeTDS). Para instalar los componentes ZeosLib en primer lugar los descargaremos de su web oficial:
En nuestro caso y a fecha de este tutorial el fichero ZEOSDBO-7.0.3-stable.zip, una vez descargado lo descomprimiremos pulsando con el botón derecho sobre él y seleccionando «Extraer»:
Elegiremos la carpeta donde se extraerán los ficheros y pulsaremos «Extraer»:
Una vez descargados ZeosLib y descomprimido el fichero, abriremos Lazarus, cerraremos cualquier proyecto abierto desde el menú «Archivo» – «Cerrar Todos» y accederemos al menú «Paquete» – «Abrir archivo de paquete (.lpk)»:
Accederemos a la carpeta donde hayamos extraído el fichero de instalación de ZeosLib y seleccionaremos el fichero «zcomponent.lpk» ubicado en …/ZEOSDBO-7.0.3-stable/packages/lazarus, pulsaremos «Abrir»:
En la ventana de examinar paquete de Lazarus pulsaremos en «Usar >>» y en «Instalar»:
El asistente para instalar un nuevo paquete en Lazarus nos indicará que se va a instalar el paquete zcomponent 7.0 (con los paquetes zdbc 7.0, zparsesql 7.0, zplain 7.0, zcore 7.0). Pulsaremos «Aceptar»:
El asistente nos indicará que se deberá reconstruir Lazarus, pulsaremos «Sí»:
Con el texto: El paquete «zcomponent 7.0» se marcó para instalar. Actualmente Lazarus solo soporta paquetes enlazados estáticamente. La instalación completa necesita reconstruir y reiniciar Lazarus ¿Desea reconstruir ahora Lazarus?
Se iniciará el proceso de reconstrucción de Lazarus, esperaremos unos segundos y en la ventana de Mensajes de Lazarus nos indicará el proceso realizado:
Tras la reconstrucción se reiniciará Lazarus y ya tendremos disponibles los componentes ZeosLib en la pestaña «Zeos Access» de la barra de componentes de Lazarus:
Librerías DLL para acceso a PostgreSQL desde aplicación desarrollada con Lazarus y ZeosLib en Windows 8
ZeosLib no incorpora las librerías DLL necesarias para el acceso a los motores de base de datos que soporta. En parte es lógico pues ZeosLib usa las DLL estándar y oficiales que proporciona cada motor (con cada versión y para 32 y 64 bits), por lo tanto serían innumerables las librerías a aportar en la descarga de ZeosLib.
Para acceder a PostgreSQL con ZeosLib o incluso con los componentes propios de Lazarus deben descargarse las librerías DLL cliente de acceso a PostgreSQL. ZeosLib admite bases de datos tanto de 32 como de 64 bits. Obviamente para desarrollar una aplicación x64 necesitaremos disponer de un sistema operativo de 64 bits, Lazarus de 64 bits y las librerías DLL del motor a acceder también de 64 bits.
Una forma sencilla de obtener estas librerías necesarias para acceder a una base de datos PostgreSQL de 64 bits desde una aplicación de 64 bits es descargando el fichero postgresql-9.2.4-1-windows-x64-binaries.zip, desde la siguiente URL oficial de PostgreSQL y seleccionando la descarga «Win x86-64»:
Descomprimiendo dicho fichero, en la siguiente carpeta del fichero descomprimido encontraremos las DLL necesarias:
…postgresql-9.2.4-1-windows-x64-binariespgsqlbin
En principio son para aplicaciones de 64 bits son necesarios los ficheros DLL:
- libpq.dll
- libeay32.dll
- ssleay32.dll
- libintl-8.dll
Puede que se requiera alguno más para determinados procedimientos. En las pruebas realizadas en nuestro laboratorio fueron suficientes los anteriores para la conexión con PostgreSQL x64 y la ejecución de consultas SQL.
Para el caso de aplicaciones Lazarus desarrolladas en x32 (32 bits) obtendremos las librerías de la misma forma que la explicada anteriormente para x64, accederemos a la URL oficial de PostgreSQL y descargaremos, en este caso, «Win x86-32»:
Descomprimiremos el fichero postgresql-9.0.13-1-windows-binaries.zip y encontraremos las librerías DLL necesarias para x32 en:
…/postgresql-9.0.13-1-windows-binaries/pgsql/bin
Que suelen ser las mismas (mismos nombres y versiones diferentes) que para x64:
- libpq.dll
- libeay32.dll
- ssleay32.dll
- libintl-8.dll
Nota: si falta alguna librería para el caso de x32 la aplicación mostrará un error al intentar acceder a PostgreSQL (como el que indicamos aquí). Podremos encontrarlas instalando la herramienta pgAdmin que también incluye las librerías comerr32.dll, gssapi32.dll, k5sprt32.dll, krb5_32.dll, libiconv2.dll, libintl3.dll que en algunos casos son necesarias)
Son necesarios todos los ficheros anteriores pues existe la creencia equivocada de que con el fichero libpq.dll es suficiente, pero con este fichero la aplicación daría este error al intentar conectar a PostgreSQL:
[Window Title]
Error
[Content]
None of the dynamic libraries can be found or is not loadable: libpq.dll !
Use TZConnection.LibraryLocation if the location is invalid.
[Aceptar]
Aunque el error «incita a engaño» pues indica que no se ha encontrado la librería libpq.dll lo que quiere decir es que no se ha podido cargar porque requiere de otras DLL no presentes. Por lo tanto para el acceso a PostgreSQL se requieren los ficheros indicados anteriormente.
Si queremos distribuir nuestra aplicación Lazarus en entornos, por ejemplo, de servidores Windows con servicio de terminales, para que las librerías DLL estén disponibles para todos los usuarios podremos copiarlas a:
- Si tanto el sistema operativo como la aplicación Lazarus es de 64 bits copiaremos las DLL para x64 de PostgreSQL a la carpeta %systemroot%/system32 de Windows.
- Si el sistema operativo es de 64 bits y la aplicación Lazarus es de 32 bits copiaremos los ficheros DLL de 32 bits a la carpeta %systemroot%/SysWOW64 del sistema operativo.
- Si el sistema operativo es de 32 bits la aplicación tendrá que ser obligatoriamente de 32 bits y las DLL también serán las de 32 bits y podremos copiarlas a %systemroot%/system32 de Windows.
Donde %systemroot% será la unidad y carpeta de instalación de Windows.
Si no lo tenemos claro siempre podremos dejar las librerías DLL de PostgreSQL en la misma carpeta que el ejecutable de la aplicación, así también funcionará.
Desarrollar aplicación Lazarus de 64 bits con acceso a bases de datos PostgreSQL x64
Crear proyecto Lazarus
Una vez preparado el entorno como hemos explicado anteriormente (instalando Lazarus, los componentes ZeosLib y obteniendo las librerías DLL de acceso a PostgreSQL) ya podremos empezar a desarrollar nuestra aplicación Lazarus. Para ello lo abriremos desde el menú Inicio de Windows 8:
La primera vez que accedamos a Lazarus nos mostrará una ventana como la siguiente, pulsaremos «Arrancar IDE»:
Para crear un nuevo proyecto pulsaremos en el menú «Archivo» – «Nuevo»:
Seleccionaremos «Proyecto» – «Aplicación» y pulsaremos «Aceptar»:
Añadir componentes visuales y no visuales de acceso a datos en aplicación Lazarus
Añadiremos todos los componentes necesarios para nuestra aplicación:
- TEdit para introducción de datos de conexión al servidor de base de datos.
- TButton para conectar con el servidor y ejecutar consultas SQL.
- TMemo para la introducción de consultas SQL.
- TCheckBox para indicar si la consulta SQL es de modificación de datos (INSERT, UPDATE, DELETE, CREATE, DROP, ALTER) o bien es de selección (SELECT).
Y los controles de acceso a base de datos que a continuación indicamos.
Por un lado necesitaremos un TZConnection de la pestaña «Zeos Access», no será necesario indicar ninguna propiedad en tiempo de diseño pues las estableceremos en tiempo de ejecución:
Un TZQuery que ser el encargado de ejecutar la sentencia SQL en el servidor de base de datos y devolver el resultado, también de la pestaña «Zeos Access» de la paleta de componentes de Lazarus. Enlazaremos este componente TZQuery con el anterior TZConnection mediante la propiedad «Connection»:
Añadiremos también el componente no visual TDataSource de la pestaña «Data Access», dicho componente será el enlace entre el TZQuery y los componentes visuales TDBNavigator y TDBGrid que añadiremos más adelante. El componente TZDataSource irá enlazado con el TZQuery mediante la propiedad «DataSet»:
Añadiremos ahora los componentes visuales de acceso a datos, por un lado un TDBNavigator de la pestaña «Data Controls» que nos proporcionará varias acciones a realizar sobre el grid de datos (TDBGrid) sin tener que añadir código fuente (movernos adelante, atrás, primero y último, añadir registro, eliminar registro, validar cambios, refrescar). Dicho componente irá enlazado con el TDataSource mediante la propiedad «DataSource»:
Y por último añadiremos el TDBGrid de la pestaña «Data Controls» en el que se mostrarán los registros de la consulta SQL. Dicho componente irá enlazado con el TDataSource mediante la propiedad «DataSource»:
Incluyendo un TComboBox de la paleta de componentes «Standard» para que el usuario pueda elegir el protocolo (motor de base de datos) permitiremos que nuestra aplicación sea válida para acceso a SQLite, PostgreSQL, Oracle, Firebird, SQL Server, MySQL, Sybase de la aplicación Lazarus con acceso a bases de datos. En la propiedad «Items» del ComboBox añadiremos las siguientes líneas para que el usuario pueda elegir el protocolo admitido por ZeosLib (necesitará las librerías apropiadas para el motor elegido):
- ASA12
- ASA7
- ASA8
- ASA9
- firebird-1.0
- firebird-1.5
- firebird-2.0
- firebird-2.1
- firebird-2.5
- firebirdd-1.5
- firebirdd-2.0
- firebirdd-2.1
- firebirdd-2.5
- FreeTDS_MsSQL<=6.5
- FreeTDS_MsSQL<=200
- FreeTDS_MsSQL-2000
- FreeTDS_MsSQL-7.0
- FreeTDS_Sybase<10
- FreeTDS_MsSQL-10+
- interbase-6
- mssql
- mysql
- mysql-4.1
- mysql-5
- mysqld-4.1
- mysqld-5
- oracle
- oracle-9i
- pooled.*
- postgresql
- postgresql-7
- postgresql-8
- postgresql-9
- sqlite
- sqlite-3
- sybase
Esta es una de las grandes ventajas de usar ZeosLib y es que permite conexión nativa a los motores de base de datos listados anteriormente sin apenas realizar cambios en nuestra aplicación:
Código fuente Lazarus de la aplicación para acceso a PostgreSQL o cualquier otro motor de base de datos con ZeosLib
Una vez creado el proyecto y añadidos los componentes visuales y no visuales, como hemos explicado anteriormente, procederemos a introducir el código fuente para cada componente o evento que lo necesite.
Para el caso del botón Conectar, en su evento OnClick que podremos abrir pulsando sobre el TButton «Conectar», pulsando la tecla INTRO, nos mostrará la ventana de propiedades, en la pestaña «Eventos» haremos doble clic sobre «OnClick»:
Añadiremos el siguiente código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
procedure TformPrincipal.btConectarClick(Sender: TObject); begin try bdConexion.Connected := false; bdConexion.HostName := txtServidor.Text; bdConexion.Password := txtContrasena.Text; bdConexion.Port := StrToInt(txtPuerto.Text); bdConexion.User := txtUsuario.Text; bdConexion.Database := txtBD.Text; bdConexion.Catalog := txtBD.Text; bdConexion.Protocol:= lsProtocolo.Text; bdConexion.Connected := true; MessageDlg ('Conexión realizada correctamente al ' + 'servidor de base de datos.', mtInformation, [mbOK], 0); txtSQL.SetFocus; except raise; end; end; |
Con el código anterior establecemos los parámetros de conexión al motor de base de datos elegidos por el usuario (servidor, usuario, contraseña, base de datos, puerto y protocolo).
Para el caso del botón Ejecutar, en su evento OnClick añadiremos el siguiente código:
1 |
procedure TformPrincipal.btEjecutarClick(Sender: TObject);<br>begin<br> tConsultaSQL.Close;<br> tConsultaSQL.SQL.Clear;<br> tConsultaSQL.SQL.Add(txtSQL.Text);<br> try<br> if opModificacion.Checked then<br> tConsultaSQL.ExecSQL<br> else<br> tConsultaSQL.Open;<br> except<br> raise;<br> end;<br>end; |
Con el código anterior ejecutaremos la consulta SQL introducida por el usuario, diferenciando si se trata de una consulta de modificación o de selección mediante el CheckBox «Modificación».
La aplicación también guardará los datos de conexión y última SQL ejecutada cuando se cierre la aplicación, para ello añadiremos el siguiente código en el evento OnClose del formulario de la aplicación:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
procedure TformPrincipal.FormClose(Sender: TObject; var CloseAction: TCloseAction); var fichero : string; begin with tinifile.create (changefileext(paramstr(0),'.ini')) do try writeBool ('SQL', 'Modificación', opModificacion.Checked); writeInteger ('Conexión Base Datos', 'Puerto', StrToInt(txtPuerto.Text)); writeString ('Conexión Base Datos', 'Servidor', txtServidor.Text); writeString ('Conexión Base Datos', 'Usuario', txtUsuario.Text); writeString ('Conexión Base Datos', 'Base datos', txtBD.Text); writeString ('Conexión Base Datos', 'Protocolo', lsProtocolo.Text); writeString ('Conexión Base Datos', 'Contraseña', txtContrasena.Text); finally free; end; fichero := IncludeTrailingPathDelimiter(ExtractFilePath(paramstr(0))) + 'ultimasqlejecutada.sql'; txtSQL.Lines.SaveToFile(fichero); end; |
Y este otro código para cargar los valores cuando la aplicación se inicia, en el evento OnCreate del formulario:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
procedure TformPrincipal.FormCreate(Sender: TObject); var fichero : string; begin with tinifile.create (changefileext(paramstr(0),'.ini')) do try opModificacion.Checked := ReadBool ('SQL', 'Modificación', false); txtPuerto.Text := IntToStr(ReadInteger ('Conexión Base Datos', 'Puerto', 5433)); txtServidor.Text := ReadString ('Conexión Base Datos', 'Servidor', 'localhost'); txtUsuario.Text := ReadString ('Conexión Base Datos', 'Usuario', ''); txtBD.Text := ReadString ('Conexión Base Datos', 'Base datos', ''); lsProtocolo.Text := ReadString ('Conexión Base Datos', 'Protocolo', 'postgresql-9'); txtContrasena.Text := ReadString ('Conexión Base Datos', 'Contraseña', ''); finally free; end; fichero := IncludeTrailingPathDelimiter(ExtractFilePath(paramstr(0))) + 'ultimasqlejecutada.sql'; if FileExists(fichero) then txtSQL.Lines.LoadFromFile(fichero); end; |
En el Uses del formulario añadiremos:
uses
Classes, SysUtils, Forms, Controls, Graphics,
Dialogs, StdCtrls, db,
DBGrids, DbCtrls, ZConnection,
ZDataset, inifiles, lclintf;
Con estos sencillos pasos ya podremos ejecutar y compilar nuestra aplicación de 64 bits en Lazarus para probarla en Windows 8 x64, para compilarla pulsaremos la tecla «F9» o bien desde el menú «Ejecutar» – «Compilar»:
Si todo es correcto se abrirá la aplicación en Windows 8:
AjpdSoft Acceso PostgreSQL con Lazarus en Windows 8 en funcionamiento
La aplicación AjpdSoft Acceso PostgreSQL con Lazarus es bastante sencilla, a continuación mostramos su funcionamiento. Tras abrirla con las librerías correspondientes al motor de base de datos al que queramos conectarnos (como hemos indicando en este tutorial) deberemos introducir los datos de acceso al motor de base de datos:
- Servidor: nombre DNS o IP del servidor de base de datos al que nos conectaremos.
- Usuario: nombre de usuario del motor de base de datos con el que iniciaremos sesión.
- Contraseña: contraseña para el usuario anterior.
- BD: nombre de la base de datos o catálogo.
- Puerto: puerto de conexión.
- Protocolo: elegiremos en el desplegable el motor de base de datos al que nos conectaremos (deberemos tener las librerías DLL correspondientes).
Una vez introducidos los datos de conexión pulsaremos en el botón «Conectar»:
Si los datos son correctos, disponemos de las DLL apropiadas y el servidor de base de datos permite la conexión la aplicación mostrará el mensaje «Conexión realizada correctamente al servidor de base de datos»:
A partir de ahora y dependiendo de los permisos del usuario con el que nos hayamos conectado, podremos realizar cualquier acción mediante SQL, por ejemplo mostrar los registros de un tabla existente «facturas» con la consulta SQL:
1 |
select *<br>from facturas |
Puesto que es de selección desmarcaremos el check «Modificación» y la ejecutaremos pulsando en «Ejecutar». Si existe la tabla y tenemos permisos la aplicación nos mostrará todos los datos y registros en el grid:
También podremos, por ejemplo, crear una tabla. Para ello escribiremos el código SQL correspondiente:
1 |
create table clientes (codigo int, fecha date, nombre varchar(100)); |
Puesto que es una consulta de modificación de datos marcaremos «Modificación» y pulsaremos en ejecutar:
Ahora podremos ejecutar la consulta de selección:
1 |
select * from clientes; |
Y, puesto que disponemos de un TDBNavigator podremos añadir registros, modificar registros y eliminar registros directametne en el grid de datos:
Es conveniente realizar una prueba de ejecución de la aplicación en otro equipo diferente al que hayamos usado para desarrollarla con Lazarus. Así tendremos la certeza de que disponemos de todas las DLL necesarias, copiando el ejecutable de nuestra aplicación (de la carpeta del proyecto Lazarus) y las DLL necesarias lo ejecutaremos en otro equipo de la red (incluso con otro sistema operativo):
En el ejemplo anterior hemos utilizado el ejecutable de nuestra aplicación y las librerías libpq.dll, libeay32.dll, ssleay32.dll y libintl-8.dll, lo hemos ejecutado en un equipo con Windows 7 x64 y ha funcionado perfectamente:
Obviamente, para realizar la conexión a un motor de base de datos desde un equipo diferente al que lo contiene puede que tengamos que configurarlo para permitir conexiones externas. En el caso de PostgreSQL en el siguiente tutorial mostramos cómo prepararlo para conexiones externas:
Nuestra aplicación, al ser de 64 bits, no funcionará en equipos de 32 bits:
Si la ejecutamos mostrará el error: xxxx.exe no es una aplicación Win32 válida.
Anexo
- Solución al error no hay una línea en pg_hba.conf para «xxx», usuario «xxx», base de datos «xx», SSL inactivo: si al ejecutar nuestra aplicación Lazarus con acceso a PostgreSQL se produce el siguiente error:
[Window Title]
AjpdSoft Acceso PostgreSQL [Content]
SQL Error: FATAL: no hay una línea en pg_hba.conf para «xxx», usuario «usuajpdsoft», base de datos «bdajpdsoft», SSL inactivo. Press OK to ignore and risk data corruption.
Press Cancel to kill the program. [OK] [Cancel] - Es debido a que estamos intentando acceder al servidor PostgreSQL desde otro equipo de la red, para solucionar este problema y configurar PostgreSQL para permitir conexiones externas podéis seguir el siguiente tutorial:
(Aunque es para Linux, para sistemas operativos Windows el proceso es similar).
- Solución al error: None of the dynamic libraries can be found or is not loadable: libpq.dll: este error suele producirse cuando falta alguna librería (DLL) de acceso al motor de base de datos elegido en Protocol o bien cuando las librerías no son las adecuadas. En este tutorial explicamos cómo solucionar este problema:
[Window Title]
Error[Content]
None of the dynamic libraries can be found or is not loadable: libpq.dll !
Use TZConnection.LibraryLocation if the location is invalid.[Aceptar]
En concreto en esta sección:
- Librerías DLL para acceso a PostgreSQL desde aplicación desarrollada con Lazarus y ZeosLib en Windows 8.
- Código fuente completo en Lazarus de la aplicación AjpdSoft Acceso PostgreSQL con Lazarus en Windows 8:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
unit UnidadFormMenuPrincipal; {$mode objfpc}{$H+} interface uses Classes, SysUtils, db, Forms, Controls, Graphics, Dialogs, StdCtrls, DBGrids, DbCtrls, ZConnection, ZDataset, inifiles, lclintf; type { TformPrincipal } TformPrincipal = class(TForm) btEjecutar: TButton; btConectar: TButton; Label7: TLabel; lsProtocolo: TComboBox; dbNavegador: TDBNavigator; dbTabla: TDatasource; Label5: TLabel; Label6: TLabel; opModificacion: TCheckBox; gridBD: TDBGrid; GroupBox1: TGroupBox; GroupBox2: TGroupBox; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; txtContrasena: TEdit; txtBD: TEdit; txtPuerto: TEdit; txtServidor: TEdit; txtSQL: TMemo; txtUsuario: TEdit; bdConexion: TZConnection; tConsultaSQL: TZQuery; procedure btConectarClick(Sender: TObject); procedure btEjecutarClick(Sender: TObject); procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); procedure FormCreate(Sender: TObject); procedure Label7Click(Sender: TObject); private { private declarations } public { public declarations } end; var formPrincipal: TformPrincipal; implementation {$R *.lfm} { TformPrincipal } procedure TformPrincipal.btConectarClick(Sender: TObject); begin try bdConexion.Connected := false; bdConexion.HostName := txtServidor.Text; bdConexion.Password := txtContrasena.Text; bdConexion.Port := StrToInt(txtPuerto.Text); bdConexion.User := txtUsuario.Text; bdConexion.Database := txtBD.Text; bdConexion.Catalog := txtBD.Text; bdConexion.Protocol:= lsProtocolo.Text; bdConexion.Connected := true; MessageDlg ('Conexión realizada correctamente al ' + 'servidor de base de datos.', mtInformation, [mbOK], 0); txtSQL.SetFocus; except raise; end; end; procedure TformPrincipal.btEjecutarClick(Sender: TObject); begin tConsultaSQL.Close; tConsultaSQL.SQL.Clear; tConsultaSQL.SQL.Add(txtSQL.Text); try if opModificacion.Checked then tConsultaSQL.ExecSQL else tConsultaSQL.Open; except raise; end; end; procedure TformPrincipal.FormClose(Sender: TObject; var CloseAction: TCloseAction); var fichero : string; begin with tinifile.create (changefileext(paramstr(0),'.ini')) do try writeBool ('SQL', 'Modificación', opModificacion.Checked); writeInteger ('Conexión Base Datos', 'Puerto', StrToInt(txtPuerto.Text)); writeString ('Conexión Base Datos', 'Servidor', txtServidor.Text); writeString ('Conexión Base Datos', 'Usuario', txtUsuario.Text); writeString ('Conexión Base Datos', 'Base datos', txtBD.Text); writeString ('Conexión Base Datos', 'Protocolo', lsProtocolo.Text); writeString ('Conexión Base Datos', 'Contraseña', txtContrasena.Text); finally free; end; fichero := IncludeTrailingPathDelimiter(ExtractFilePath(paramstr(0))) + 'ultimasqlejecutada.sql'; txtSQL.Lines.SaveToFile(fichero); end; procedure TformPrincipal.FormCreate(Sender: TObject); var fichero : string; begin with tinifile.create (changefileext(paramstr(0),'.ini')) do try opModificacion.Checked := ReadBool ('SQL', 'Modificación', false); txtPuerto.Text := IntToStr(ReadInteger ('Conexión Base Datos', 'Puerto', 5433)); txtServidor.Text := ReadString ('Conexión Base Datos', 'Servidor', 'localhost'); txtUsuario.Text := ReadString ('Conexión Base Datos', 'Usuario', ''); txtBD.Text := ReadString ('Conexión Base Datos', 'Base datos', ''); lsProtocolo.Text := ReadString ('Conexión Base Datos', 'Protocolo', 'postgresql-9'); txtContrasena.Text := ReadString ('Conexión Base Datos', 'Contraseña', ''); finally free; end; fichero := IncludeTrailingPathDelimiter(ExtractFilePath(paramstr(0))) + 'ultimasqlejecutada.sql'; if FileExists(fichero) then txtSQL.Lines.LoadFromFile(fichero); end; procedure TformPrincipal.Label7Click(Sender: TObject); begin OpenURL('https://www.proyectoa.com'); end; end. |