Qt und SQL ODBC
Verfasst: 15. November 2010 02:05
Hoffentlich kann mir jemand auf die Sprünge helfen, denn ich dreh' langsam durch
... Habe seit Tagen diverse Suchfunktionen benutzt, dicke Bücher gewälzt ... man kann halt viel Zeit mit Sachen verlieren, von denen man wenig versteht ...
Also ich hab' zwei WinXP PCs im Netzwerk. Auf einem läuft MS SQL Server mit einer Datenbank ... Ich hab' ein MSVC++-Programm welches darauf lokal erfolgreich zugreift (ohne Qt). Das funktioniert auch über's Netz von dem anderen PC. Nun muß das gleiche Programm unter Linux laufen und ich will's mit Qt machen. Also läuft auf dem zweiten PC das aktuelle Ubuntu als virtuelle Maschine. Ich kann damit auch auf den ersten PC zugreifen. Alle WinXP-Firewalls sind aus.
Habe also unter Ubuntu das aktuelle Qt installiert, Beispiele getestet, alles OK. Aber egal was ich mache, ich komm' nicht an die Datenbank ran. Zuerst kam die Meldung von addDatabase("QODBC"), daß die Qt-Installation für diesen Typ Datenbank keinen Treiber hat, sondern nur andere wie SQLITE etc. ... obwohl in diversen Dokus immer behauptet wird, ODBC und MySQL wären unterstützt ... Ich wollte eigentlich partout nichts mit configure, make und install zu tun haben, hab' es dann doch gemacht ... nun akzeptiert Qt das ODBC, hat aber all die anderen DB-Typen verloren (und die Beispielprojekte sind angeblich auch nicht mehr installiert ... fluch, ich hab' keine Ahnung).
Die nächste Klippe war dann, was in setDatabaseName() usw. rein muß. Ich bekam immer nur die Fehlermeldung, daß kein Defaulttreiber gesetzt ist etc. Seltsamerweise von iODBC, dachte ich Qt arbeitet mit unixODBC ... Also hab' ich nun die odbc.ini bearbeitet, ohne großen Erfolg. Die Variable ODBCINI hab' ich gesetzt und die odbc.ini wird auch gefunden, aber was auch immer ich im Web lese und versuche, ich bekomme immer die o.g. Meldung. Also habe ich in setDatabaseName() nun vollen Pfad und Name einer *.DSN Datei gesetzt und in der Datei unter Driver=... den vollen Pfad zum einzigen odbc-Treiber angegeben, den ich im ganzen System gefunden habe :
/usr/lib/qt4/plugins/sqldrivers/libqsqlodbc.so
Jetzt startet die Applikation ohne Fehlermeldung ... und kommt nicht mehr zurück, also zumindest nicht nach 5 Minuten oder so ... Die ganze Applikation besteht nur aus 20 Zeilen Code ... QApplication, QSqlDatabase,addDatabase,setDatabaseName, if db.open, return app.exec();
Solange es Fehler gab, kam die Messagebox, nun nicht mehr ... Ich vermute, daß mit der *.so Datei was nicht stimmt, aber weiß man's ?
Vielen Dank, falls jemand bis hier gelesen hat !
Any comments ? Ich frag' mich gerade, ob ich alles von vorn anfangen soll ... wäre wirklich sehr dankbar für Hilfe ...
Also ich hab' zwei WinXP PCs im Netzwerk. Auf einem läuft MS SQL Server mit einer Datenbank ... Ich hab' ein MSVC++-Programm welches darauf lokal erfolgreich zugreift (ohne Qt). Das funktioniert auch über's Netz von dem anderen PC. Nun muß das gleiche Programm unter Linux laufen und ich will's mit Qt machen. Also läuft auf dem zweiten PC das aktuelle Ubuntu als virtuelle Maschine. Ich kann damit auch auf den ersten PC zugreifen. Alle WinXP-Firewalls sind aus.
Habe also unter Ubuntu das aktuelle Qt installiert, Beispiele getestet, alles OK. Aber egal was ich mache, ich komm' nicht an die Datenbank ran. Zuerst kam die Meldung von addDatabase("QODBC"), daß die Qt-Installation für diesen Typ Datenbank keinen Treiber hat, sondern nur andere wie SQLITE etc. ... obwohl in diversen Dokus immer behauptet wird, ODBC und MySQL wären unterstützt ... Ich wollte eigentlich partout nichts mit configure, make und install zu tun haben, hab' es dann doch gemacht ... nun akzeptiert Qt das ODBC, hat aber all die anderen DB-Typen verloren (und die Beispielprojekte sind angeblich auch nicht mehr installiert ... fluch, ich hab' keine Ahnung).
Die nächste Klippe war dann, was in setDatabaseName() usw. rein muß. Ich bekam immer nur die Fehlermeldung, daß kein Defaulttreiber gesetzt ist etc. Seltsamerweise von iODBC, dachte ich Qt arbeitet mit unixODBC ... Also hab' ich nun die odbc.ini bearbeitet, ohne großen Erfolg. Die Variable ODBCINI hab' ich gesetzt und die odbc.ini wird auch gefunden, aber was auch immer ich im Web lese und versuche, ich bekomme immer die o.g. Meldung. Also habe ich in setDatabaseName() nun vollen Pfad und Name einer *.DSN Datei gesetzt und in der Datei unter Driver=... den vollen Pfad zum einzigen odbc-Treiber angegeben, den ich im ganzen System gefunden habe :
/usr/lib/qt4/plugins/sqldrivers/libqsqlodbc.so
Jetzt startet die Applikation ohne Fehlermeldung ... und kommt nicht mehr zurück, also zumindest nicht nach 5 Minuten oder so ... Die ganze Applikation besteht nur aus 20 Zeilen Code ... QApplication, QSqlDatabase,addDatabase,setDatabaseName, if db.open, return app.exec();
Solange es Fehler gab, kam die Messagebox, nun nicht mehr ... Ich vermute, daß mit der *.so Datei was nicht stimmt, aber weiß man's ?
Vielen Dank, falls jemand bis hier gelesen hat !
Any comments ? Ich frag' mich gerade, ob ich alles von vorn anfangen soll ... wäre wirklich sehr dankbar für Hilfe ...