PDA

Ver la Versión Completa : problema al conectar lazarus con postgresql


serdl
26-12-2011, 02:54:45
Hola, feliz navidad para todos.
bueno resulta que me descargue la version 0.9.28.2 de lazarus y tengo postgresql 9.0 para manejar la base de datos, estoy usando windows 7, el problema es que al intentar conectar un control zconnection me da un mensaje de error que dice "no fue encontrado el driver de la base de datos"

porque pasa esto?

primero me pedia una dll libq.dll y lo copie al directorio del proyecto y ahora me sale este error, que puede estar pasando?

saludos

Casimiro Notevi
26-12-2011, 11:08:02
¿Has elegido correctamente el driver a usar?

serdl
26-12-2011, 17:35:22
Hola Casimiro, nose como elegir el driver, como hago eso?
gracias

Casimiro Notevi
26-12-2011, 18:14:51
En las propiedades del componente.

serdl
26-12-2011, 18:39:56
En las propiedades del componente.

ha ok, si, yo la version de postgresql que tengo es la estable 6.6.6 y esta no aparecia en las propiedades del componente

serdl
26-12-2011, 19:04:29
acabo de instalar una version mas nueva de lazarus y la version estable 6.6.6 de los componentes zeos.

las propiedades que pongo en zconnection son estas:

database: bbdd (base de datos en postgresql)
hostname: localhost
password: contraseña de postgresql
user: postgre (usuario en postgresql)
protocol: postgresql (la version que tengo de postgresql es 9.0 y aca aparece hasta 8.0)


ahora cuando cambio connected a true me aparece el siguiente mensaje:

"Can not find default login prompt dialog. Please add DBLogdlg to the uses section of your main file "

al agregar en el uses dblogdlg me marca error en esa linea.

serdl
26-12-2011, 19:33:12
ahora hice una modificacion al proyecto, agregando un boton para conectar por codigo de esta forma:

procedure TForm1.ToggleBox1Change(Sender: TObject);
begin
zconnection1.Database:= 'bbdd';
zconnection1.HostName:= 'localhost';
zconnection1.User:= 'postgre';
zconnection1.Password:='serdel';
zconnection1.Connected:= true;
end;

ahora me sale un mensaje:

SQLerror: fe_sendauth authentication type 5 not supported

me desorienta donde puede estar el error

serdl
26-12-2011, 20:14:37
modifique las lineas de configuracion de postgresql

# TYPE DATABASE USER CIDR-ADDRESS METHOD

# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5

cambie md5 por trust, y aparece otro error.
sera la version del servidor postgresql?

serdl
27-12-2011, 13:43:55
no se podra mover este tema al apartado postgresql? puede que alli alguien con un problema parecido lo vea.
saludos

radenf
27-12-2011, 23:47:32
Estimado serdl :

Yo tuve un problema similar al actualizar PostgreSql desde la versión 8.3 a la versión 9.0, porque zeos no tiene soporte para esta última en su versión estable 6.6.6.
Debí reinstalar la versión 8.3 de PostgreSql y funcionó perfecto, utilizando el driver adecuado a esta versión.
Por cierto uso Delphi 2007, no Lazarus.

Saludos y ojalá pueda haberte ayudado

serdl
28-12-2011, 04:40:36
Hola radenf, voy a seguir tu sugerencia y ver que pasa, voy a instalar ora version de postgresql. Gracias voy a seguir haciendo pruebas y comento como va todo, saludos.

serdl
28-12-2011, 15:47:59
recien me instale la version 8.3 de postgre y sigue sin funcionar, al conectar me dice que no se puede encontrar las librerias dinamicas libq81 y libq.dll.

copie libq.dll al directorio de la aplicacion, agregue las variables de entorno correspondiente en el path.

no se que mas hacer

jejo1984
10-01-2012, 13:24:02
Hola que tal lo que debes hacer primero es esto:
1.-La libreria libq.dll se debe sacar de la siguiente ruta(uso W xp): C:\Archivos de programa\PostgreSQL\psqlODBC\0900\bin
2.- Copia y pega en la carpeta System32
3.- luego ejecuta nuevamente tu aplicación y veras que librerias mas te faltan y la encontraras en la misma carpeta.

jejo1984
10-01-2012, 13:27:06
Aqui te dejo un ejemplo de codigo no utilizo zconnection:
procedure Tfrm_reg_tip_demo.conectabd();
var
MyIniFile : TIniFile;
BBDDhost,BBDDName : String;
password, usuario : String;
begin
MyIniFile := TIniFile.Create(ExtractFilePath(ParamStr(0))+'conexion.ini');
Try
BBDDhost:=MyIniFile.ReadString('BBDD','host','');
BBDDName:=MyIniFile.ReadString('BBDD','BD','');
Usuario :=MyIniFile.ReadString('BBDD','Usuario','');
Password:= MyIniFile.ReadString('BBDD','Password','');
(* *)
PQConnection1.HostName:=BBDDhost;
PQConnection1.DatabaseName:=BBDDName;
PQConnection1.UserName:=Usuario;
PQConnection1.Password:=Password;
Finally
MyIniFile.Free;
End;
end;

jejo1984
10-01-2012, 13:30:21
Luego acceso de esta forma:

procedure TFrm_lista_incidencia.Refresh_listado();
begin
conectabd();
PQConnection1.Transaction:=SQLTransaction1;
SQLTransaction1.DataBase:=PQConnection1;
SQLlist_inci.DataBase:=PQConnection1;
SQL_mod_incidencia.DataBase:=PQConnection1;

SQLlist_inci.Close;
SQLlist_inci.Active:=False;
SQLlist_inci.SQL.Clear;
SQLlist_inci.SQL.Text:='SELECT * FROM LISTA_INCIDENCIA';
Datasource1.DataSet:=SQLlist_inci;
try
SQLlist_inci.open;
grid_lista_incidencia.RowCount:=1;
while not SQLlist_inci.EOF do
begin
grid_lista_incidencia.RowCount:=grid_lista_incidencia.RowCount +1;
grid_lista_incidencia.Cells[0,grid_lista_incidencia.RowCount-1]:=SQLlist_inci.Fields[0].AsString;
grid_lista_incidencia.Cells[1,grid_lista_incidencia.RowCount-1]:=SQLlist_inci.Fields[1].AsString;
grid_lista_incidencia.Cells[2,grid_lista_incidencia.RowCount-1]:=SQLlist_inci.Fields[2].AsString;
grid_lista_incidencia.Cells[3,grid_lista_incidencia.RowCount-1]:=SQLlist_inci.Fields[3].AsString;
grid_lista_incidencia.Cells[4,grid_lista_incidencia.RowCount-1]:=SQLlist_inci.Fields[4].AsString;
grid_lista_incidencia.Cells[5,grid_lista_incidencia.RowCount-1]:=SQLlist_inci.Fields[5].AsString;
grid_lista_incidencia.Cells[6,grid_lista_incidencia.RowCount-1]:=SQLlist_inci.Fields[6].AsString;
grid_lista_incidencia.Cells[7,grid_lista_incidencia.RowCount-1]:=SQLlist_inci.Fields[7].AsString;
SQLlist_inci.Next;
end;
PQConnection1.Close;
except
on E: Exception do
begin
Showmessage( PChar( E.Message )+ 'Error de SQL');
SQLTransaction1.EndTransaction;
end;
end;

jejo1984
10-01-2012, 13:32:30
Utilizo estos componentes:
PQConnection1: TPQConnection;
SQLlist_inci: TSQLQuery;
SQLTransaction1: TSQLTransaction;
Datasource1: TDatasource;
grid_lista_incidencia: TStringGrid;

jejo1984
10-01-2012, 13:37:26
Si deseas saber las uses que utiliso aqui te las dejo:
uses
Classes, SysUtils, sqldb, db, pqconnection, FileUtil, Forms, Controls,Graphics, Dialogs, DBGrids, Buttons, StdCtrls, Grids, ExtCtrls,LclType,IniFiles;

Y aqui te dejo mi archivo .ini:
[BBDD]
host=localhost
BD=servicio118xy
Usuario=postgres
Password=admin