QT - No puedo conectar Qt con PostgreSql

   
Vista:

No puedo conectar Qt con PostgreSql

Publicado por Jose R (12 intervenciones) el 15/02/2016 03:04:01
Al ejecutar el siguiente codigo me da un error: "DRIVER NOT LOADED"

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
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMainWindow>
#include <QtGui>
#include <QtCore>
#include <QtSql>
#include <qmessagebox.h>
 
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
 
    QSqlDatabase qdb = QSqlDatabase::addDatabase("QPSQL");
 
      qdb.setHostName("localhost");
      qdb.setDatabaseName("postgres");
      qdb.setUserName("*****");
      qdb.setPassword("******");
      qdb.setPort(5432);
 
      if(qdb.open())
      {
          QMessageBox msg;
                    msg.setText("Conectado");
                     msg.exec();
 
      }
      else
      {
          QMessageBox msg;
                    msg.setText("Error en Conectar");
                    msg.setInformativeText(db.lastError().text());
                    msg.exec();
 
      }
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

No puedo conectar Qt con PostgreSql

Publicado por juanki (67 intervenciones) el 15/02/2016 19:05:43
Hola

Ese es el error que da Qt cuando hay algún problema con el driver de bases de datos y, la verdad, es poco claro y no ayuda en nada.

Para empezar supongo que tienes el driver disponible, eso lo puedes comprobar usando el método drivers() de la clase QSqlDatabase, que te devuelve un QStringList con todos los drivers disponibles:

1
qDebug() << QSqlDatabase::drivers();

También tendrás instalado y funcionando correctamente PostgreSQL.

Aun estando todo lo anterior correctamente, lo más probable es que el drivers no pueda localizar algún archivo que necesita para funcionar, concretamente tendrás que copiar las librerías libeay32.dll, intl.dll, libpq.dll y ssleay32.dll, que estarán en la carpeta bin de la instalación de PostgreSQL a la carpeta C:\ruta_de_instalacion_qt\mingw\bin.

No olvides que cuando distribuyas la aplicación, también tendrás que adjuntar dichas librerías junto a tu ejecutable.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

No puedo conectar Qt con PostgreSql

Publicado por Jose R. (12 intervenciones) el 15/02/2016 19:19:06
Si las copie, esos archivos estaban dentro de la carpeta de instalación de PostgreSql, el depurador me sale todos los drivers disponibles, El sistema operativo en Windows 7 64 bits, estuve leyendo en alguna parte que existe incompatibilidad con 64 bit, sera cierto esto?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

No puedo conectar Qt con PostgreSql

Publicado por juanki (67 intervenciones) el 15/02/2016 22:12:11
Pues no lo sé, pudiera ser.

Yo revisaría que todo esté correcto, hace un tiempo me pasó lo mismo con firebird, terminé echándole la culpa a los 64bits, pero resultó ser que me faltaba copiar un archivo en la carpeta adecuada. Lo hice y se solucionó el "driver not loaded".

Para windows hay un programa, dependency walker, que te da una lista de las dependencias que tiene tu programa, quizás puedas usarlo para ver si te falta algo.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

No puedo conectar Qt con PostgreSql

Publicado por osvaldo (6 intervenciones) el 19/07/2016 22:56:25
primero que todo copia la direccion del bin dende se instalo el postgreSql y ir a configuracion avansada del sistema despues variables de entorno y variables de usarios para tu ususario ejemplo(osvaldo) darle nueva la vas crear con nombre PATH y abajo le pegas la direccion que copiastes anteriormente. espero que eso te funcione. Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar