如何从QSqlDatabase访问低级sqlite3句柄?

时间:2011-08-02 17:59:29

标签: qt sqlite

是否可以从带有QSQLite驱动程序的已打开的QSqlDatabase获取低级sqlite3*句柄?

我需要在其上调用一些低级sqlite3函数,以便安装自定义SQL函数。

更新:找到解决方案:

Q_DECLARE_METATYPE(sqlite3*)

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

3 个答案:

答案 0 :(得分:4)

在我的情况下(qt5,sqlite3)你必须这样做。如果您不包含Q_DECLARE_OPAQUE_POINTER(),则会收到错误。

Q_DECLARE_OPAQUE_POINTER(sqlite3*)
Q_DECLARE_METATYPE(sqlite3*)

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

答案 1 :(得分:3)

QSqlDriver有一个handle() method,它将返回包含在QVariant中的低级数据库句柄。你可以获得这个驱动程序via your QSqlDatabase

答案 2 :(得分:0)

这是另一个来源,它在解压缩sqlite3指针后尝试执行时会出现一些陷阱。 http://www.qtcentre.org/threads/36131-Attempting-to-use-Sqlite-backup-api-from-driver-handle-fails