简短版本:我需要在java程序的运行之间存储一些数据。数据将是一个表的形式。有没有什么可以让你做一些像java中的SQL查询?解决方案必须是可以在离线计算机上运行。
长版本:用户每天都会输入一些数据,我想要一些像java中的sql表。该程序将在未连接到互联网的计算机上运行,因此我需要一种真正的本地方式来存储数据(很多)。同样优选地,数据应该以这样的方式存储,使得它不容易被访问。最终用户(如,他不应该双击文件并只是阅读其内容)
主要约束:在网上搜索时我发现很多人都在使用localhost来解决类似问题,但我无法使用该工具,因为我无法在目标计算机上安装任何东西。
答案 0 :(得分:4)
如果简单的数据文件不够好,那么SQLite与JDBC backend的使用情况如何?它允许您将SQL数据库存储在常规文件中,而不依赖于任何类型的服务器。或者,您可以使用许多其他嵌入式数据库引擎,具体取决于您的需求。
编辑:
顺便说一下,我所知道的大多数(如果不是全部)数据库引擎在将数据存储到文件系统之前不会混淆数据。如果您强制编辑器打开文件(例如在Windows中使用“打开方式...”),数据将被分段,但部分内容将可见。
使用所选数据库引擎的命令行实用程序也无法阻止用户访问数据。如果要对数据进行模糊处理,则必须在代码中进行模糊处理。请记住,这将不阻止一个坚定的人 - 如果您的应用程序可以离线阅读,那么其他人也可以。
答案 1 :(得分:3)
使用嵌入式数据库(如Apache Derby,HSQLDB,H2),这样您就不必在计算机上运行数据库服务器。数据将本地存储在目标机器上,并且不会是人类可读的。
答案 2 :(得分:1)
您有几种选择:
您可以安装像mysql这样的数据库,也可以使用内存数据库,如sqlite或hbase或apache derby,它包含在java 6中