2013-07-09 25 views
6

パフォーマンスを向上させるためにsqlite-Fileをメモリに読み込もうとしています。アプリケーションを終了するときにhddに書き戻したいと思います。Javaのディスクからメモリにsqliteをバックアップして復元する

Javaでjdbc(3.7.2)ドライバを使用しています。

は、ドキュメントによると、私のコードは

this._conn = DriverManager.getConnection("jdbc:sqlite:"); 
Statement stat = this._conn.createStatement(); 
File dbFile = new File(this._config.GetDataBaseFile()); 
if (dbFile.exists()) { 
    this._logger.AddInfo("File exists."); 
    stat.executeUpdate("restore from " + dbFile.getAbsolutePath()); 
} 

のように見えるファイルが存在する(とその有効なのsqliteのDB)、this._connは開いているが、私はそれに文を実行したい場合には、そのそこに表示されますテーブルもデータもありません。それは何も回復しないようだ。

それをさらに解決/デバッグする方法に関する提案はありますか?

(ところで - 私は私の接続にstat.executeUpdate("backup to test.db")を使用する場合、それは私の空のバックアップ:メモリ:デシベルを...)

+0

ファイルが存在し、有効なSQLiteデータベースですが、テーブルが含まれていますか? – mthmulders

+0

はいそうです。データも同様です。 – RalphP

+0

@ mjreaper..didこのコードの解決策を見つけましたか?復元方法を教えてください。 –

答えて

0

あなたは二つ欠けているように見えます:ファイル名の前後1)引用符を、および2)stat.close。以下を試してください:

これは、Xerial SQLite JDBCバージョン3.7.15-M1で動作する唯一の方法でした。この場合、バージョンが大したものではないと私は思います。

0

私がテストしたリンク「https://bitbucket.org/xerial/sqlite-jdbc/wiki/Usage」によれば、引用符とstat.close()は関係ありません。ただし、ファイルパスにスペースが含まれている場合は引用符が役立ちます。

おそらく、jdbcドライバが原因だと思います。 SQLite用のXerialのJDBCドライバを試してください。これはうまく動作します。

関連する問題