Schritte zum Aktivieren/Testen von QODBC unter Mac OS ((Seirra) gegenüber MSSQL oder einer anderen ODBC-Datenbank:
Symptom 1:Die Anwendung Qt Run (Debug) stürzt ab (Programm wird unerwartet beendet/abgestürzt). Symptom 2:Qt Creator mit vorgefertigten Qt-Paketen (MaintenanceTool).
Symptom 3:Der freeTDS-Treiber (libtdsodbc.so) fehlt nach der Installation der freeTDS-Pakete.
Symptom 4:Qt wurde vor oder mit fehlendem unixODBC erstellt/konfiguriert.
- Laden Sie unixODBC herunter und installieren Sie es (muss vor der Installation von freeTDS erfolgen )(www.unixODBC.org ) / (Treiber) / (unixODBC-2.3.4.tar.gz)
entpacken und entpacken Sie die Pakete.
./configure --prefix=/usr/local/unixODBC
(stellen Sie sicher, dass Sie OR sudo schreiben können)
make
sudo make istall
- Laden Sie freeTDS herunter und installieren Sie es:(http://www.freetds.org/ ) / ( Quick Links) / (Neueste Versionen) / (Stable Release)
entpacken/entpacken Sie das Paket.
./configure --prefix=/usr/local/freeTDS --with-unixodbc=/usr/local/unixODBC/
make
sudo make istall
Hinweis:--with-unixodbc
bewirkt, dass der Treiber (libtdsodbc.so) installiert wird.
-
Leider sollte eventuell das ODBC-Plugin auf Qt neu gebaut werden:
-
Wenn Sie die vorgefertigten Qt-Bibliotheken verwenden, müssen Sie die Quellen mit dem MaintenanceTool ($QTDIR/MaintenanceTool.app) herunterladen
-
Teilen Sie qmake mit, wo die unixODBC-Header-Dateien und gemeinsam genutzten Bibliotheken zu finden sind (hier wird davon ausgegangen, dass unixODBC in /usr/local/unixODBC installiert ist) und führen Sie make:
aus
cd $QTDIR/qtbase/src/plugins/sqldrivers/odbc
mein Fall:
cd /usr/local/Qt/5.9.1/Src/qtbase/src/plugins/sqldrivers/odbc
qmake "INCLUDEPATH+=/usr/local/unixODBC/include" "LIBS+=-L/usr/local/unixODBC/lib -lodbc"
make
-
wenn das richtig geht:erhalten Sie kompilierte QODBC new libs:
cd ../plugins/sqldrivers/
Kopieren Sie die neuen Pakete zum Beispiel nach :
/usr/local/Qt/5.9.1/clang_64/plugins/sqldrivers/
- Konfigurieren Sie /etc/local/unixODBC/etc/odbc.ini (möglicherweise benötigen Sie Root-Berechtigungen ändern)
(FreeTDS muss nicht konfiguriert werden):
- (welcher Port ? welche Version -> Führen Sie
/usr/local/freeTDS/bin/tsql -LH 192.168.x.x
aus -
Eintrag in /usr/local/unixODBC/etc/odbc.ini erstellen/ändern
[MYDSN]
Driver = /usr/local/freeTDS/lib/libtdsodbc.0.so
Server = 192.168.x.x
Port = 51271
- im Qt-Projekt:
QSqlDatabase mydb = QSqlDatabase::addDatabase("QODBC");
mydb.setDatabaseName("MYDSN")
mydb.setUserName("name on Database");
mydb.setPassword(" password on Database");