我的目标是创建一个可以使用Java读取和写入的本地数据库。我有一些使用Python操作本地sqlite数据库的经验,并通过VB.Net与Microsoft Azure上的现有网络数据库进行交互,但用于创建数据库的Java公式正在逃避我。
大多数来源(如JDBC Docs)似乎都假设您通过网络协议或localhost上托管的数据库访问数据库。我希望的实现是在文件(或文件集合)中创建和存储数据库,以便可以在本地存储和访问它,而无需网络连接(可通过“file:”协议)。
JDBC Tutorial看起来一旦我启动并运行它将非常有用,但目前超出了我的范围,因为我还没有现有的数据库。
Many sources提出了H2,MySQL,Derby或Hypersonic DB等解决方案。但是,由于以下几个原因,我不愿意安装扩展程序(如果这是正确的术语):
出于类似的原因,安装Microsoft SQL Server效率不高。
This回答看起来接近我的目标;但是,它给出了错误:
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/?user=root&password=rootpassword
并尝试“jdbc:file://targetFile.sql”会产生类似的错误。
我见过“嵌入式”数据库,我认为这是“本地数据库”的一个子集(即本地数据库存储在同一系统中 - 嵌入式数据库是本地数据库,仅供本地数据库使用单一申请) - 如果我的定义有误,请随时纠正我!
答案 0 :(得分:6)
最有可能的原因是,您获得错误的原因是由于您在实际使用它来建立连接之前没有注册驱动程序(使用反射...)等等。
据推测,你会想要按照Class.forName("driver")
然后在必要时进行转换,然后在调用getConnection()
方法之前在DriverManager中注册它。
这是一个非常有用的链接,可以帮助您解决问题:
http://www.kfu.com/~nsayer/Java/dyn-jdbc.html
但是,如果你真的想使用本地数据库/文件,你可能想看看SQLite,这可能是一种方法,虽然我建议采用MySQL方法,因为它很多更容易配置和了解JDBC的工作原理。
如果你还在考虑SQLite,请查看:
我认为您需要一些指导,将外部.jar文件导入您的代码(即第三方库,例如您将用于JDBC驱动程序的库)。您使用的是IDE(例如Eclipse,Netbeans等),还是在文本编辑器中编写并手动编译?
答案 1 :(得分:3)
最近出现了许多嵌入式纯Java数据库,它们有一个非常简单的接口,通常只是java.util.Map
,不涉及使用JDBC或其他SQL工件,并将它们的数据存储在单个文件或目录中:
主要缺点是大多数此类数据库仅提供简单的键值模型。
答案 2 :(得分:0)
DBC可以与任何具有JDBC驱动程序的数据库一起使用,该驱动程序不一定是“网络模式”下的数据库,也可以与嵌入式数据库一起使用。
以下是一些Java和可嵌入数据库:
答案 3 :(得分:0)