是否可以从带有QSQLite驱动程序的已打开的QSqlDatabase获取低级sqlite3*
句柄?
我需要在其上调用一些低级sqlite3函数,以便安装自定义SQL函数。
更新:找到解决方案:
Q_DECLARE_METATYPE(sqlite3*)
sqlite* sqlite_handle = database.driver()->handle().value<sqlite3*>();
答案 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