2016-08-05 3 views
0

私は以下の問題を抱えています: 私はクロスプラットフォームアプリケーション(Linux/Android)を開発しています。私はSQLiteデータベースをAndroidにデプロイしています。 。 は、私はSQLiteデータベースの実行を取得することはできないんだけど、私のデータベース接続を扱う私のDBManagerのC++ファイルにAndroid App(Qt)にSQLiteをデプロイ

deployment.files += rako.db 

deployment.path = /assets 

INSTALLS += deployment 

今私の.PROファイルに次のコードを資産に私のDBファイルを追加するために管理しました: ( [...]

db_.setDatabaseName("assets:/rako.db"); 

は、私が何かを欠場か?

おかげでみんな、

マックス

答えて

0

私は何かお見逃しですか?

実際、はいです。 androidフォルダFOすべてのコンテンツがapkにコピーされます

ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android 

: は、あなたのassetsフォルダは、あなたのproファイルに次の行を追加する必要がありますandroidフォルダの下にあると仮定すると。

次に、Androidのassestsは読み取り専用のフォルダです。データベースを使用する前に、assetsから別の場所にコピーしてください。

0
QFile dfile("assets:/db/database-last.db3"); 
if (dfile.exists()) 
{ 
    dfile.copy("./database-last.db3"); 
    QFile::setPermissions("./database-last.db3",QFile::WriteOwner |  QFile::ReadOwner); 
} 

...

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); 
db.setDatabaseName("./database-last.db3"); 
db.open(); 

...

.PROファイル内

deployment.files += database-last.db3 
deployment.path = /assets/db 
INSTALLS += deployment 

これは、Android上で動作しますが、iOSとWinphoneに同じことを行う方法?

関連する問題