HSQLDB - 向用户隐藏数据库结构/内容

Posted

技术标签:

【中文标题】HSQLDB - 向用户隐藏数据库结构/内容【英文标题】:HSQLDB - hiding database structure/contents from users 【发布时间】:2009-08-24 14:35:29 【问题描述】:

我正在考虑在桌面应用程序中使用 HSQLDB 版本 1.8.x 来存储本地数据。据我所知,数据库作为一些 SQL 语句存储在磁盘上,用于创建表、插入数据等。

有没有一种简单的方法可以向用户隐藏它?我不一定需要完全加密,等等 - 我只是想防止临时用户简单地打开文件并查看数据库的结构。

【问题讨论】:

【参考方案1】:

您可以将您的数据库文件嵌入到一个 jar 文件中并使用以下符号连接到它们:

jdbc:hsqldb:res:<path in jar>

查看 HSQLDB 指南的Advanced Topics 部分以获取更多信息。但是,我从未尝试过,所以不能 100% 确定它会起作用......

【讨论】:

【参考方案2】:

我现在采用的解决方案是调用:

db.update("SET SCRIPTFORMAT COMPRESSED;");

以人类不可读的形式存储 .script 文件,并且:

db.update("SET PASSWORD password;");

防止更精明的用户使用自己的 HSQLDB 客户端打开数据库。

【讨论】:

【参考方案3】:

不幸的是,我无法执行以下命令 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

【讨论】:

2.x版本的命令是SET FILES SCRIPT FORMAT COMPRESSED

以上是关于HSQLDB - 向用户隐藏数据库结构/内容的主要内容,如果未能解决你的问题,请参考以下文章

HSQLDB 和内存文件

如何在hsqldb中更改数据库的用户名密码

从 intellij 14 查看 petclinic 应用程序的 hsqldb 内容

无法以新用户身份连接到 HyperSQL / HSQLDB 数据库

HSQLDB:java.sql.SQLSyntaxErrorException:用户缺少权限或找不到对象

HSQLDB Spring 用户缺少权限