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 - 向用户隐藏数据库结构/内容的主要内容,如果未能解决你的问题,请参考以下文章
从 intellij 14 查看 petclinic 应用程序的 hsqldb 内容
无法以新用户身份连接到 HyperSQL / HSQLDB 数据库