Java DB的文档说它与JDK捆绑在一起,我已经读过在以后的Java版本中不需要特殊的类加载(我有Java 8)。但是,尝试连接到它完全失败:
DriverManager.getConnection("jdbc:derby:testDB;create=true")
抛出SQLException,SQL状态为08001(连接失败)。
我也试过显式加载驱动程序类,但它也会抛出错误:
Class.forName("org.apache.derby.jdbc.ClientDriver");// ClassNotFoundException
下面的代码甚至无法编译,因为找不到derby类:
DriverManager.registerDriver(new org.apache.derby.jdbc.EmbeddedDriver());
如何使用Java DB连接数据库?
答案 0 :(得分:0)
要使用“内置”Java DB,您必须手动将derby jar添加到类路径中。这就是我在Gradle中的表现:
testCompile files("$System.env.JAVA_HOME/db/lib/derby.jar")
我不喜欢这个,因为这意味着你依赖于本地目录结构,而不是通过名称和版本号解析的普通依赖项。
我原本希望“Java DB”能够完全集成到标准库中,但事实并非如此。它与每个JDK安装简单地共存。由于这有一个通常是过时的德比版本的额外缺点,我将忽略Java DB并且只使用来自maven central的最新derby版本:
testCompile group: 'org.apache.derby', name: 'derby', version: '10.13.1.1'
另请注意,先前需要的Class.forName(...)
语句仍会引发ClassNotFoundException
;该声明不需要让德比工作。