2016-04-29 14 views
1

私のプロジェクトに外部SQLiteデータベースをインポートすることに興味があります。 QTクイックローカルストレージを使用する場合 :プロジェクトに外部SQLiteデータベースをインポートする

LocalStorage.openDatabaseSync("QQmlExampleDB", "1.0", "The Example QML SQL!", 1000000);

を問題は、プログラムが新しいデータベースを生成し、ということで、それが可能だ場合、私は開いている既存のデータベースに興味があります。

ありがとうございました!

答えて

1

openDatabaseSyncは、オフラインデータを格納するディレクトリにdbsを検索または作成します。
そのディレクトリはQQmlEngineクラスのデータメンバofflineStoragePathによって識別されます。
これを変更するには、メンバーメソッドsetOfflineStoragePath(詳細はhereを参照してください)を使用することができます。
openDatabaseSyncのための最初の引数は次のとおりです。

OpenDatabaseメソッドに渡されたデータベース()の名前

は、さらなる詳細について hereを参照してください。あなたは私、私は私の問題を解決する可能性が持っている情報をあなたのすべての

+0

ありがとうございますが、現在の関数openDatabaseSyncが正しく動作しない可能性がありますか? 私はそれを行う際に、関係なく、私はopenDataBaseSyncに置くウィッヒ名は、プログラムは常に例えば、ranom名前の新しいDBを作成していないので: a32d695d324fbf044d62821c5ee7e4de.sqliteおかげ –

+0

を私はデータベースへのパスを覚えていたようです'QQmlEngine :: offlineStoragePafh' + md5(name)+" .sqlite "です。 'name'は' openDatabaseSync'の第1引数ですので、データベースを適切な名前で置くだけで動作します。 – folibis

+0

@folibis 2つのファイルを交換するよりも、正しい名前の空のファイルを作成すれば十分です。右? – skypjack

0

おかげで、私がしなければならなかったしているすべてのものは以下のとおりです。

:main.cppに内のすべての 最初に私は私のオフラインストレージパスを設定します私は私の資源からSQLiteのフォルダに私のプロジェクトで使用するために、私は希望DBを持っているので

QDir dir("./Databases"); 
if (!dir.exists()) { 
    dir.mkpath("."); 
} 
QString new_name = QString(QCryptographicHash::hash(("nameofthecopiedDB"),QCryptographicHash::Md5).toHex()); 

QFile file(":/SQLite/nameofsourceDB.sqlite"); 
file.copy("./Databases/" + new_name + ".sqlite"); 
file.close(); 

engine.setOfflineStoragePath(QString("./")); 

それから私はまた、このコードを追加します(:、リソースを示します)。

そして、QMLファイルで、openDatabaseSync()関数:

basedades = Sql.LocalStorage.openDatabaseSync('nameofthecopiedDB',"1.0","Els meus entrenaments",1000000,"QSQLITE") 

ありがとうございます!

関連する問題