2011-03-01 4 views
17

J'utilise VS2008 & QT plugin pour faire mon application. Après avoir fait ensemble quand je suis en cours d'exécution de la demande, j'obtiens l'erreur:Pilote QSQLITE non chargé - où placer les plugins qt de pilote de base de données

QSqlDatabase: QSQLITE driver not loaded 
QSqlDatabase: available drivers: 
Database error: QSqlError(-1, "Driver not loaded", "Driver not loaded") 
QSqlError(-1, "Driver not loaded", "Driver not loaded") 

J'ai ajouté le qsqlite.dll à mon paquet & également changé le libpath. Mais je reçois toujours cette erreur. Comment résoudre ceci.

Mon code ::

QStringList str; 
str.append("."); 
a.setLibraryPaths(str); 
a.addLibraryPath("./sqldrivers/"); 

//a.addLibraryPath("."); 

qDebug()<<"my library path : "<<a.libraryPaths(); 

QLibrary sqlib("qsqlite4.dll"); 
sqlib.load(); 
qDebug()<<"my library loaded"<<sqlib.isLoaded(); 

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); 
qDebug()<<"Database error:"<<db.lastError(); 

db.setDatabaseName("vimukti1234"); 
qDebug()<< db.lastError(); 

db.open(); 
QSqlQuery query; 
+0

Je suis maintenant capable de construire en VS avec succès. Et je fais aussi un paquet de drivers mais toujours la base de données ne fonctionne pas dans un autre système –

Répondre

30

Les pilotes doivent être placés sous « sqldrivers », pas dans le même répertoire que l'exécutable (ils sont chargés sur l'exécution, et Qt semble pour eux dans « sqldrivers »). Une structure typique d'un de nos applications installées est comme ceci:

.: 
total 26616 
-rwxr-xr-x 1 root root 2245632 Sep 29 03:53 AlvaEditor.exe 
-rwxr-xr-x 1 root root 2335232 Sep 29 03:53 QtCore4.dll 
-rwxr-xr-x 1 root root 8421376 Sep 29 03:53 QtGui4.dll 
-rwxr-xr-x 1 root root 199168 Sep 29 03:53 QtSql4.dll 
-rwxr-xr-x 1 root root 306688 Sep 29 03:53 libctemplate.dll 
-rwxr-xr-x 1 root root 26624 Sep 29 03:53 qgif4.dll 
-rwxr-xr-x 1 root root 28672 Sep 29 03:53 qico4.dll 
-rwxr-xr-x 1 root root 200704 Sep 29 03:53 qjpeg4.dll 
-rwxr-xr-x 1 root root 222720 Sep 29 03:53 qmng4.dll 
-rwxr-xr-x 1 root root 439808 Sep 29 03:53 qsqlite4.dll 
-rwxr-xr-x 1 root root 21504 Sep 29 03:53 qsvg4.dll 
-rwxr-xr-x 1 root root 287232 Sep 29 03:53 qtiff4.dll 
drwxr-xr-x 2 root root 4096 Sep 29 03:53 sqldrivers 

./sqldrivers: 
total 432 
-rwxr-xr-x 1 root root 439808 Sep 29 03:53 qsqlite4.dll 
+0

+ 1 merci merci merci merci !! J'ai été bogué sur tout ce soir. –

+0

Cela m'a aidé aussi. J'ai oublié d'inclure les sqldrivers et j'ai passé des heures à me demander pourquoi mes constructeurs de versions ne fonctionnaient pas. Salutations +1 :) – T3CHN0CR4T

+0

Je ne comprends toujours pas, où placer sqldrivers? – Liviu

0

Essayez cette première:

qDebug() << QSqlDatabase::drivers(); 

pour vérifier les pilotes disponibles.

3

Eh bien, la fonction: addDatabase ("QSQLITE"); prend deux paramètres, le premier est le conducteur et le second est le nom de votre connexion, (passé en QString)

Maintenant, essayez ce qui suit:

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "SQLITE"); 

Il a travaillé pour moi, donc je suppose que ça va marcher pour vous. (En supposant que SQLite est parmi vos pilotes installés)

Vous pouvez vérifier SQLITE par ce qui suit:

qDebug () << QSqlDatabase :: Drivers () ; 

Bonne chance!

Zaher J.G.