2011-08-02 4 views
2

QSQLiteドライバを使用して開いたQSqlDatabaseから低レベルのsqlite3*ハンドルを取得することはできますか?QSqlDatabaseから低レベルのsqlite3ハンドルにアクセスするには?

カスタムSQL関数をインストールするために、いくつかの低レベルのsqlite3関数を呼び出す必要があります。

更新:

Q_DECLARE_METATYPE(sqlite3*) 

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

あなたのソリューションはまさに私が答えたものですか? – Bart

答えて

2

QSqlDriverがQVariantに包まれた低レベルのデータベースハンドルを返しますhandle() methodがあります解決策を見つけました。あなたはこのドライバを得ることができますvia your QSqlDatabase

0

私の場合(qt5、sqlite3)は、このようにする必要があります。 Q_DECLARE_OPAQUE_POINTER()が含まれていないと、エラーが発生します。

Q_DECLARE_OPAQUE_POINTER(sqlite3*) 
Q_DECLARE_METATYPE(sqlite3*) 

sqlite* sqlite_handle = database.driver()->handle().value<sqlite3*>(); 
関連する問題