如何在java应用程序中存储数据?

Posted

技术标签:

【中文标题】如何在java应用程序中存储数据?【英文标题】:How to store the data within java application? 【发布时间】:2018-05-18 13:15:52 【问题描述】:

我正在使用嵌入在我的 java 应用程序中的 H2 数据库。我正在创建与服务器的连接:

jdbc:h2:file:/mydata

其中 mydata 是数据库名称。这似乎告诉数据库连接调用者在与运行应用程序相同的目录中查找数据库。但它无法在客户端计算机上找到它。为什么?该怎么办?将数据库保存在哪里,以免在分发应用程序时丢失数据?

【问题讨论】:

您是否将该文件与您的 Java 应用程序一起分发?最好使用 mysql 之类的远程独立数据库 @Ivan:我不认为客户端-服务器-数据库总是比嵌入式数据库好。这取决于用例。独立的桌面应用程序可能完全适合嵌入式数据库并且更易于安装(据您所知,该怎么做:-) @vanje 同意,但是如果多个用户需要使用相同的数据/数据库怎么办? @Ivan:在这种情况下,应该使用服务器数据库,或者更好地使用具有隐藏数据库的服务层的服务器应用程序。正如我所说,这取决于用例。有时只有一个用户,就不需要网络连接开销或管理第二个数据库进程。 @Ivan 是的,我将一些示例数据与我的应用程序一起分发。对于 mysql,用户要么需要在他的系统本身中安装服务器,要么必须连接到网络。我想一个简单的单用户独立应用程序不需要这样做。 【参考方案1】:

根据文档,mydata 之前不需要/,您需要在同一目录中查找文件

用于连接本地数据库的数据库 URL 是 jdbc:h2:[file:][path]。前缀文件:是可选的。如果不使用或仅使用相对路径,则使用当前工作目录作为起点。路径和数据库名称是否区分大小写取决于操作系统,但建议仅使用小写字母。数据库名称的长度必须至少为三个字符(File.createTempFile 的限制)。

http://www.h2database.com/html/features.html#embedded_databases

因此,在您的示例中,您尝试连接到根文件夹中名为 mydata 的文件。看起来您在 /mydata 之前忘记了一个点 (.)。试试下面的jdbc:h2:file:./mydata

【讨论】:

以上是关于如何在java应用程序中存储数据?的主要内容,如果未能解决你的问题,请参考以下文章

将Java应用程序数据冗余存储在文件中的最佳方法是啥?

如何在 Java 中保存数据?酒店申请

如何通过java驱动程序在mongodb中存储38位整数

如何从 Java 和 JPA 调用存储过程

JAVA如何存储mysql登录信息

构建一个应用程序,用于在基于内存的数据库中存储 POJO(普通旧 Java 对象)