Étapes pour activer/tester QODBC sur Mac OS ((Seirra) vers MSSQL ou toute autre base de données ODBC :
Symptôme 1 :L'application Qt Run (Debug) plante (le programme s'est terminé/planté de manière inattendue). Symptôme 2 :Qt Creator avec des packages Qt pré-construits (MaintenanceTool).
Symptôme 3 :le pilote freeTDS (libtdsodbc.so) est manquant après l'installation des packages freeTDS.
Symptôme 4 :Qt construit/configuré avant ou avec unixODBC manquant.
- Téléchargez et installez unixODBC (doit être fait avant d'installer freeTDS )(www.unixODBC.org ) / (Pilotes) / (unixODBC-2.3.4.tar.gz)
décompressez et décompressez les packages.
./configure --prefix=/usr/local/unixODBC
(assurez-vous que vous pouvez écrire OR sudo)
make
sudo make istall
- Téléchargez et installez freeTDS :(http://www.freetds.org/ ) / ( Liens rapides) / (Dernières versions) / (Version stable)
décompressez/décompressez le package.
./configure --prefix=/usr/local/freeTDS --with-unixodbc=/usr/local/unixODBC/
make
sudo make istall
Remarque :--with-unixodbc
entraînera l'installation du pilote (libtdsodbc.so).
-
Malheureusement, il est possible que le plugin ODBC sur Qt doive être reconstruit :
-
Si vous utilisez les bibliothèques Qt prédéfinies, vous devrez télécharger les sources à l'aide de MaintenanceTool ($QTDIR/MaintenanceTool.app)
-
Indiquez à qmake où trouver les fichiers d'en-tête unixODBC et les bibliothèques partagées (ici, on suppose qu'unixODBC est installé dans /usr/local/unixODBC) et exécutez make :
cd $QTDIR/qtbase/src/plugins/sqldrivers/odbc
mon cas :
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
-
si cela se passe correctement :vous obtiendrez les nouvelles bibliothèques QODBC conformes :
cd ../plugins/sqldrivers/
copier les nouveaux packages par exemple vers :
/usr/local/Qt/5.9.1/clang_64/plugins/sqldrivers/
- Configurez /etc/local/unixODBC/etc/odbc.ini (vous aurez peut-être besoin des autorisations root modifier)
(Pas besoin de configurer freeTDS) :
- (quel port ? quelle version -> Exécuter
/usr/local/freeTDS/bin/tsql -LH 192.168.x.x
-
Créer/Modifier une entrée dans /usr/local/unixODBC/etc/odbc.ini
[MYDSN]
Driver = /usr/local/freeTDS/lib/libtdsodbc.0.so
Server = 192.168.x.x
Port = 51271
- dans le projet Qt :
QSqlDatabase mydb = QSqlDatabase::addDatabase("QODBC");
mydb.setDatabaseName("MYDSN")
mydb.setUserName("name on Database");
mydb.setPassword(" password on Database");