【发布时间】:2021-07-25 11:06:34
【问题描述】:
我正在尝试为编程类设置 Java DB 数据库。我正在遵循 Deitel 和 Deitel 教科书中的步骤:
我已经安装了 JDK11.8.0_112。 我正在运行 Windows 10。
我的安装在 C:\Program Files\Java\jdk1.8.0_112 我将 JAVA_HOME var 设置为 C:\Program Files\Java\jdk1.8.0_112
教科书说去安装位置 db\bin 并编辑 setEmbeddedCP.bat 文件 @rem 将 DERBY_INSTALL= 设置为 @SET DERBY_INSTALL=%JAVA_HOME%\db
然后打开命令提示符,进入该文件所在目录并运行,我已经完成了,结果如下:
本书有一些创建表格的源代码。我复制并粘贴到我自己的项目中,C:\Users\hulbe\OneDrive\Documents\NetBeansProjects\DisplayAuthors\build\classes\displayauthors。
这本书然后声明使用命令行并将目录更改为包含章节示例的文件夹,这些示例现在位于我自己的项目中。
接下来,在命令行中输入“%JAVA_HOME%\db\bin\ij”。
然后,连接 'jdbc:derby:newbooks;create=true;user=xxx;password=xxx'; 我有数据库和要创建的表(我认为)。但是当我运行代码时,我得到 "java.sql.SQLException: 找不到适合 jdbc:derby:newbooks 的驱动程序"
我真的在我的智慧结束这里。现在我花了两天时间尝试设置全新安装,并按照书籍的设置方式进行操作。
代码如下:`try ( 连接连接 = DriverManager.getConnection( DATABASE_URL, "deitel", "deitel");
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(SELECT_QUERY)) {
ResultSetMetaData metaData = resultSet.getMetaData();
int numberOfColumns = metaData.getColumnCount();
System.out.printf("Authors Table of Books Database: %n%n");
for (int i = 1; i <= numberOfColumns; i++) {
System.out.printf("%-8s\t", resultSet.getObject(i));
}
}
catch (SQLException sqlException) {
sqlException .printStackTrace();
}`
我知道这很长,而且我确信它已经被问过了,但我所看到的一切都无法帮助我解决这个问题。
有人知道我做错了什么吗?
编辑:问题是我必须提取 derby.jar 文件并手动添加它们,谢谢 Marco Tizzano。
但是,现在我收到此错误: java.sql.SQLException:找不到数据库“书籍”。 在 org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(未知来源) 在 org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(未知来源) 在 org.apache.derby.impl.jdbc.Util.generateCsSQLException(未知来源) 在 org.apache.derby.impl.jdbc.Util.generateCsSQLException(未知来源) 在 org.apache.derby.impl.jdbc.EmbedConnection.newSQLException(未知来源) 在 org.apache.derby.impl.jdbc.EmbedConnection.handleDBNotFound(未知来源) 在 org.apache.derby.impl.jdbc.EmbedConnection.(未知来源) 在 org.apache.derby.jdbc.InternalDriver$1.run(未知来源) 在 org.apache.derby.jdbc.InternalDriver$1.run(未知来源) 在 java.security.AccessController.doPrivileged(本机方法) 在 org.apache.derby.jdbc.InternalDriver.getNewEmbedConnection(未知来源) 在 org.apache.derby.jdbc.InternalDriver.connect(未知来源) 在 org.apache.derby.jdbc.InternalDriver.connect(未知来源) 在 org.apache.derby.jdbc.AutoloadedDriver.connect(未知来源) 在 java.sql.DriverManager.getConnection(DriverManager.java:664) 在 java.sql.DriverManager.getConnection(DriverManager.java:247) 在 displayauthors.DisplayAuthors.main(DisplayAuthors.java:24) 原因:错误 XJ004:找不到数据库“书籍”。
编辑 2: 我想我在错误的目录中创建了数据库,我在正确的目录中重新运行它,ProjectName->src->proejctname。命令提示符显示所有正确的 SQL 内容、表创建和列名等,然后运行插入。这也在该目录中创建了一个名为 db 的文件夹,但仍然找不到 DB 错误。
【问题讨论】:
-
您是从命令行还是从 Netbeans 运行代码?
-
我从 NetBeans 运行它