ODBC Plugin erstellen (Windows + MinGW)

Alles rund um die Programmierung mit Qt
Antworten
thuering
Beiträge: 26
Registriert: 1. November 2011 01:48

ODBC Plugin erstellen (Windows + MinGW)

Beitrag von thuering »

Hallo Forumskollegen,

ich bin Nutzer vom QtCreator und nutze wohl MinGW als Compiler - die Standardkonfiguration. Ich habe aber keine Ahnung vom selber kompilieren - wenn ihr ein bisschen tolerant seid, dann ist euch das hoffentlich egal und schreibt nicht sofort "beschäftige dich damit, dann sehen wir mal weiter...".

Also, ich habe hier den QtCreator 2.2.1 mit Qt 4.7.4. Weiterhin läuft ein SQL Express 2008 R2 Server. ODBC ist eingerichtet.

Ausschnitt aus dem Code:

Code: Alles auswählen

    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    db.setHostName("LOCALHOST\\SQLEXPRESS");
    db.setDatabaseName("mydsn32");

    if(db.open())
    {
        qDebug() << "Opened";
        db.close();
    }
    else
    {
        qDebug() << db.lastError().text();
    }
Fehlermeldungen von QtDebug:
QSqlDatabase: QODBC driver not loaded
QSqlDatabase: available drivers: QSQLITE
"Driver not loaded Driver not loaded"
Nun muss ich also wohl das ODBC Plugin kompilieren. In der Doc unter http://doc.qt.nokia.com/4.7/sql-driver.html#qodbc schauen die 3 Zeilen:

Code: Alles auswählen

 cd %QTDIR%\src\plugins\sqldrivers\odbc
 qmake odbc.pro
 nmake
ja sehr einfach aus, "nmake" durch "make" ersetzen habe ich auch schon verstanden... aber es scheitert ja schon am "qmake":
C:\Qt\4.7.3\qmake>qmake C:\Qt\4.7.3\src\plugins\sqldrivers\odbc\odbc.pro
QMAKESPEC has not been set, so configuration cannot be deduced.
Error processing project file: C:/Qt/4.7.3/src/plugins/sqldrivers/odbc/odbc.pro
Bin ich überhaupt richtig, diese Befehle im cmd auszuführen?
Was muss ich Schritt-für-Schritt machen, um dieses Plugin zu bekommen? Wo muss es eingesetzt werden? Gibt es noch mehr "Fallen"?

Ich will doch nur ein bisschen Datenbank machen...

Vielen Dank
Tobi
Troll.Soft
Beiträge: 190
Registriert: 18. Juni 2008 09:52
Wohnort: Hamburg

Re: ODBC Plugin erstellen (Windows + MinGW)

Beitrag von Troll.Soft »

moin,
nmake gehört zu Windows bzw VC. Für MinGW gibt es ein spezielle mingw-make, habe den genauen Namen nicht im Kopf.
tschüß
Troll.Soft
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: ODBC Plugin erstellen (Windows + MinGW)

Beitrag von Christian81 »

Das ist nicht das Problem.
Das Problem ist m.E. dass die Umgebungsvariablen QMAKESPEC nicht gesetzt ist. Diese wird gesetzt wenn man den Qt-Prompt aus dem Startmenu öffnet. Oder man gibt die spec per Kommandozeile an: http://qt-project.org/doc/qt-4.8/qmake- ... de-options
Siehe auch http://qt-project.org/doc/qt-4.8/qmake- ... #qmakespec
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
thuering
Beiträge: 26
Registriert: 1. November 2011 01:48

Re: ODBC Plugin erstellen (Windows + MinGW)

Beitrag von thuering »

Vielen Dank Christian,

die Qt Prompt war der entscheidende Hinweis, dort konnte ich qmake ausführen sowie danach auch make.
Es wurden die Unterordner "debug" und "release" erstellt, das kenne ich ja schon vom QTCreator. Im Verzeichnis debug sind nun auch einige Dateien, u.a. eine dll.
Wohin damit, damit mein unter QTCreator erstelltes Progrämmchen nun nicht mehr diese FM ausspuckt?

P.S.: Ich habe QtCreator, dass im Verzeichnis C:\QTSDK arbeitet, und dann gibts da nochmal diese Sources, die unter C:\Qt sind.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: ODBC Plugin erstellen (Windows + MinGW)

Beitrag von Christian81 »

Das make müsste das Plugin schon nach <QTDIR>/plugins/sqldrivers kopiert haben.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
thuering
Beiträge: 26
Registriert: 1. November 2011 01:48

Re: ODBC Plugin erstellen (Windows + MinGW)

Beitrag von thuering »

OK, das hat er zwar nicht gemacht, aber ich konnte die Dateien nun von
C:\Qt\4.7.3\src\plugins\sqldrivers\odbc\debug
nach
C:\QtSDK\Desktop\Qt\4.7.3\mingw\plugins\sqldrivers
kopieren.

Hier die nächste Fehlermeldung:
[Microsoft][ODBC Driver Manager] Der angegebene DSN weist eine nicht übereinstimmende Architektur von Treiber und Anwendung auf. QODBC3: Unable to connect
x64 kann es eigentlich nicht sein, denn ich habe den DSN über odbcad32.exe eingerichtet. Der SQL Express Server ist auch als 32-Bit installiert und wird im Taskmanager auch als 32 Bit ausgewiesen. Nur eine gewisse sqlwriter.exe läuft als 64 Bit... (?)
thuering
Beiträge: 26
Registriert: 1. November 2011 01:48

Re: ODBC Plugin erstellen (Windows + MinGW)

Beitrag von thuering »

Selber gelöst! :)
anstatt sich auf die einfache Lösung wie oben zu verlassen:

Code: Alles auswählen

    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    db.setHostName("LOCALHOST\\SQLEXPRESS");
    db.setDatabaseName("mydsn32");
habe ich nun

Code: Alles auswählen

    QString servername = "LOCALHOST\\SQLEXPRESS";
    QString dbname = "rpg01test";
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");

    db.setConnectOptions();
    QString dsn = QString("DRIVER={SQL Server};SERVER=%1;DATABASE=%2;Trusted_Connection=Yes;").arg(servername).arg(dbname);

    db.setDatabaseName(dsn);
versucht. Läuft! Ich konnte Datenbank + Tabellen erstellen...
Dieser Thread ist somit erstmal gelöst, wenn auch nicht ganz so, wie gewünscht. Dieser Connection-String ist nämlich schon ziemlich eklig...

In den nächsten 2 Wochen melde ich mich nochmal, wenn es heißt, von diesem ekligen MS SQL Server Express wegzukommen und mein Progrämmchen mit dem einzig wahren PostgreSQL zu verbinden... ;)

Schönen Fußballabend,

Tobi
dacown
Beiträge: 15
Registriert: 21. März 2016 17:10

Re: ODBC Plugin erstellen (Windows + MinGW)

Beitrag von dacown »

hi, ich habe versucht wie der Thread Ersteller geschrieben hat, das ODBC Plugin zu erstellen.
Als Meldung bekomme ich:
C:\QTSDK\qt5.6.0\qtbase\src\plugins\sqldrivers\odbc>qmake odbc.pro
Cannot read C:/Qt/QTSDK/qt5.6.0/qtbase/mkspecs/modules-inst/qt_plugin_qsqlmysql.pri:
Das System kann den angegebenen Pfad nicht finden.
und was will er mit qt_plugin_qsqlmysql.pri will doch ODBC und nicht mysql ?
Antworten