Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PostgreSQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=42)
-   -   problema al conectar lazarus con postgresql (https://www.clubdelphi.com/foros/showthread.php?t=77132)

serdl 26-12-2011 02:54:45

problema al conectar lazarus con postgresql
 
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

Cita:

Empezado por Casimiro Notevi (Mensaje 421913)
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:
Código Delphi [-]
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:

Código Delphi [-]
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:
Código Delphi [-]
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:
Código Delphi [-]
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


La franja horaria es GMT +2. Ahora son las 21:08:35.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi