使用Java创建新的本地数据库

scu*_*bbo 1 java sql database local embedded-database

我的目标是创建一个可以使用Java读取和写入的本地数据库.我有一些使用Python操作本地sqlite数据库的经验,并通过VB.Net与Microsoft Azure上的现有网络数据库进行交互,但是用于创建数据库的Java公式正在逃避我.

大多数源(如JDBC Docs)似乎假设您通过网络协议或localhost上托管的数据库访问数据库.我期望的实现是在文件(或文件集合)中创建和存储数据库,以便可以在本地存储和访问它,而无需网络连接(可通过"文件:"协议).

JDBC教程看起来像一次我运行起来将是非常有用的,但目前是超出了我的范围,因为我甚至不具有现有的数据库呢.

许多 消息来源提出了H2,MySQL,Derby或Hypersonic DB等解决方案.但是,由于以下原因,我不愿意安装扩展程序(如果这是正确的术语):

  • 这个项目最初的目的是帮助我学习Java的方法 - 扩大项目的范围将削弱我使用"基础"语言的经验,并可能增加参与"货物崇拜编程"的诱惑
  • 如果这个项目确实被分发给其他用户(虽然不太可能,但仍然!),我不想强​​迫他们安装超过Java的核心.
  • 我根本不知道如何在Java中安装扩展(附加组件?模块?) - 一次一个小步骤!

出于类似的原因,安装Microsoft SQL Server效率不高.

这个答案看起来很接近我的目标; 但是,它给出了错误:

java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/?user=root&password=rootpassword
Run Code Online (Sandbox Code Playgroud)

并尝试"jdbc:file://targetFile.sql"给出类似的错误.

我已经看到术语"嵌入式"数据库,我认为这是"本地数据库"的一个子集(即本地数据库存储在同一系统中 - 嵌入式数据库是仅由单个应用程序使用的本地数据库) - 如果我的定义有误,请随时纠正我!

小智 6

最有可能的原因是,您获得错误的原因是由于您在实际使用它来建立连接之前没有注册驱动程序(使用反射...)等等.

大概你会想做一些事情 Class.forName("driver")

然后在必要时进行转换,然后在调用getConnection()方法之前将其注册到DriverManager中.

这是一个非常有用的链接,可以帮助您解决问题:

http://www.kfu.com/~nsayer/Java/dyn-jdbc.html

但是,如果你真的想使用本地数据库/文件,你可能想看看SQLite,这可能是一种方法,虽然我建议采用MySQL方法,因为它更容易配置并学习如何使用JDBC.

如果你还在考虑SQLite,请检查一下:

Java和SQLite

我看到你需要一些指导,将外部.jar文件导入你的代码(即第三方库,比如你将用于JDBC驱动程序的那些).您使用的是IDE(例如Eclipse,Netbeans等),还是在文本编辑器中编写并手动编译?