ローカルデータを保存するために、デスクトップアプリでHSQLDBバージョン1.8.xを使用することを検討しています。私が見ることができることから、データベースは、テーブルを作成したり、データを挿入したりするためのいくつかのSQLステートメントとしてディスクに保存されます。
これをユーザーから隠す簡単な方法はありますか?必ずしも完全に暗号化する必要はありません。たとえば、カジュアルなユーザーがファイルを開いてデータベースの構造を確認するのを防ぐためです。
私が今行った解決策は、呼び出すことです:
db.update("SET SCRIPTFORMAT COMPRESSED;");
.script ファイルを人間が判読できない形式で保存し、次のことを行います。
db.update("SET PASSWORD password;");
より知識のあるユーザーが独自の HSQLDB クライアントを使用して DB を開くのを防ぐため。
データベース ファイルを jar ファイル内に埋め込み、次の表記法を使用してそれらに接続できます。
jdbc:hsqldb:res:<path in jar>
詳細については、HSQLDB ガイドの高度なトピックのセクションをご覧ください。ただし、私は試したことがないので、100%うまくいくとは限りません...
残念ながら、以下のコマンド
db.update("SET scriptformat COMPRESSED");を実行できませんでした。
そして、このエラーが発生していました
java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: SCRIPTFORMAT
このエラーは、このコマンド
db.update("SET FILES SCRIPT FORMAT COMPRESSED");で解決されました。
HSQLDB 2.3.3 を使用しています