QT SQL Driver wird nicht geladen ??

Alles rund um die Programmierung mit Qt
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Hast du denn überhaupt ein odbc-sqldrivers-plugin? Ohne dem kannst du kopieren was du willst, es wird nie gehen...
Vllt. musst du das ja einfach nur selber bauen. Oder geht auf dem Entwicklerrechner die Verbindung?

Und das Beispielprogramm war eigentlich für UNS gedacht, damit DU uns zeigst WIE du es machst (bitte in code-Tags packen). Und zwar ne komplette main(), und nicht nur wie du versuchst den databaseName zu setzen.
Und dass Qt auch für den Produktiveinsatz sehr wohl nutzbar ist, siehst du an GoogleEarth, Photoshop, Acrobat, uvm. Also richtig große Unternehmen, die mit ihren Produkten richtig viel verdienen.
Und BTW: Qt kostet keinen müden Cent, und du kannst damit sogar ClosedSource-Programme teuer verkaufen! Nur wegen
MFC funktioniert super und Informationsbeschaffung funktioniert auch dazu wesentlich umfangreicher und kostet einen Bruchteil von QT.
Cabo
Beiträge: 13
Registriert: 6. Mai 2010 17:10

Beitrag von Cabo »

hallo,
also ich steh vor einem ähnlichen Problem, habe sämtliche How-Tos und andere Forenbeiträge gelesen und ausprobiert, aber entweder steh ich schon wieder total auf dem Schlauch oder irgendwas stimmt da nicht.
Mittlerweile habe ich sogar auf dem ZielSystem QT installiert, allerdings funktioniert es trotzdem nicht.

Vllt helfen zusätzliche Quelltexte ja das Problem zu lösen.

Ausschnitt aus der Pro-Datei:

Code: Alles auswählen

win32:LIBS += -LC:/Qt/2010.02.1/qt/plugins/sqldrivers/qsqlpsqld4.dll \
           -LC:/Qt/2010.02.1/qt/plugins/sqldrivers/qsqlpsql4.dll \
QT += sql
main:

Code: Alles auswählen

#include <QtGui/QApplication>
#include "mainwindow.h"
#include <QSqlDatabase>
#include <QSqlQuery>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
    db.setHostName("HOSTNAME");
    db.setPort(PORTNR);
    db.setDatabaseName("db");
    db.setUserName("user");
    db.setPassword("pw");
    bool ok = db.open();
    //a.addLibraryPath( a.applicationDirPath() + "/plugins");
    MainWindow w;
    w.show();
    return a.exec();
}
Das Programm lässt sich normal starten, gibt dann aber folgende Meldung aus:
QSqlDatabase: QPSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC3 QODBC

Witziger weise werden die anderen 3 Treiber gefunden, die ich vom Entwicklerrechner kopiert habe. Ich habe auch die Dependencies vom Plugin getestet und es können alle benötigten dlls gefunden werden.

Ich verwende:
Windows XP, Qt 4.6.2
Cabo
Beiträge: 13
Registriert: 6. Mai 2010 17:10

Beitrag von Cabo »

Ich habs (zumindest bei mir) gelöst.

Das Problem lag in der pg_hba.conf Datei des Servers, in der der andere Host nicht eingetragen war.
Wieso Qt mir den Treiberfehler ausgegeben hat, weiß ich nicht (evtl ein Bug?), allerdings habe ich mit lastError() herausgefunden, dass der besagte Eintrag gefehlt hat.

Habe also einfach den Eintrag zugefügt, ausprobiert und es ging ;). Auch die Fehlermeldung kam nicht mehr.
Evtl. hilft es dir ja auch.
Antworten