3 votes

Comment accéder à un handle sqlite3 de bas niveau depuis QSqlDatabase ?

Est-il possible d'obtenir un niveau bas sqlite3* à partir d'une QSqlDatabase ouverte avec le pilote QSQLite ?

J'ai besoin d'appeler quelques fonctions sqlite3 de bas niveau sur celui-ci, afin d'installer une fonction SQL personnalisée.

Mise à jour : J'ai trouvé la solution :

Q_DECLARE_METATYPE(sqlite3*)

sqlite* sqlite_handle = database.driver()->handle().value<sqlite3*>();

4voto

bat_ventzi Points 196

Dans mon cas (qt5, sqlite3) vous devez le faire de cette façon. Si vous n'incluez pas Q_DECLARE_OPAQUE_POINTER() vous obtenez une erreur.

Q_DECLARE_OPAQUE_POINTER(sqlite3*)
Q_DECLARE_METATYPE(sqlite3*)

sqlite* sqlite_handle = database.driver()->handle().value<sqlite3*>();

3voto

Bart Points 10767

QSqlDriver possède un handle() méthode qui renverra le gestionnaire de base de données de bas niveau enveloppé dans un QVariant. Vous pouvez obtenir ce pilote via votre QSqlDatabase .

0voto

jobobo Points 146

Voici une autre source, qui semble répondre à certains pièges lorsqu'on essaie d'exécuter après avoir extrait le pointeur sqlite3. http://www.qtcentre.org/threads/36131-Attempting-to-use-Sqlite-backup-api-from-driver-handle-fails

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X