Как получить доступ к низкоуровневому дескриптору sqlite3 из QSqlDatabase? - PullRequest
3 голосов
/ 02 августа 2011

Можно ли получить дескриптор низкого уровня sqlite3* из открытой QSqlDatabase с драйвером QSQLite?

Мне нужно вызвать некоторые низкоуровневые функции sqlite3 для него, чтобы установить пользовательскийФункция SQL.

Обновление: найдено решение:

Q_DECLARE_METATYPE(sqlite3*)

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

Ответы [ 3 ]

4 голосов
/ 23 октября 2015

В моем случае (qt5, sqlite3) вы должны сделать это следующим образом. Если вы не включите Q_DECLARE_OPAQUE_POINTER(), вы получите ошибку.

Q_DECLARE_OPAQUE_POINTER(sqlite3*)
Q_DECLARE_METATYPE(sqlite3*)

sqlite* sqlite_handle = database.driver()->handle().value<sqlite3*>();
3 голосов
/ 02 августа 2011

QSqlDriver имеет метод handle() , который возвращает низкоуровневый дескриптор базы данных, заключенный в QVariant. Вы можете получить этот драйвер через вашу QSqlDatabase .

0 голосов
/ 03 февраля 2013

Вот еще один источник, который появляется отвечает на некоторые ловушки при попытке выполнить после извлечения указателя sqlite3.http://www.qtcentre.org/threads/36131-Attempting-to-use-Sqlite-backup-api-from-driver-handle-fails

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...