设置 Java 数据库

Setting up a Java Database

我正在尝试为编程 class 设置一个 Java 数据库数据库。我正在按照 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

然后打开命令提示符并转到该文件的目录和 运行 它,我已经完成了,这是结果:

这本书有一些源代码来创建 tables。我复制并粘贴到我自己的项目中,C:\Users\hulbe\OneDrive\Documents\NetBeansProjects\DisplayAuthors\build\classes\displayauthors.

然后书中说明使用命令行并将目录更改为包含章节示例的文件夹,这些示例现在在我自己的项目中。

接下来,在命令行中输入“%JAVA_HOME%\db\bin\ij”。

然后,连接'jdbc:derby:newbooks;create=true;user=xxx;password=xxx'; 我有要创建的数据库和 tables(我认为)。但是当我 运行 我得到的代码 “java.sql.SQLException:未找到 jdbc:derby:newbooks 的 suitable 驱动程序”

我真的无计可施了。我已经花了两天时间尝试设置全新安装并完全按照书籍的设置方式进行操作。

代码如下:`试试( 连接连接=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:未找到数据库 'books'。 在 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:未找到数据库 'books'。

编辑 2: 我想我在错误的目录中创建了数据库,我在正确的目录中重新运行它,ProjectName->src->proejctname。命令提示符显示了所有正确的 SQL 东西,table 创建和列名等等,然后 运行 插入。这还在该目录中创建了一个名为 db 的文件夹,但仍然找不到 DB 错误。

如果您 运行 您的代码在 Netbeans 中,问题是 JVM 找不到 Apache Derby 的驱动程序,通常(从 JDBC 4.0+)自动从类路径加载.
请记住,为了成功获得数据库连接,首先是数据库供应商驱动程序文件(在本例中为 derby.jarderbytools.jarderbyoptionaltools.jar) 必须出现在 CLASSPATH 中,事实上这正是本书指导您在创建数据库时所做的。
因此,在您的情况下,您必须在项目依赖项中添加这些库。
我从未使用过 Netbeans,但这个答案会对您有所帮助:How do I set the classpath in NetBeans?

我在这里报告要执行的步骤:

  1. 右键单击您的项目。
  2. Select Properties.
  3. 在左侧单击 Libraries
  4. 在“编译”选项卡下 - 单击 Add Jar/Folder 按钮。

或者

  1. 扩展您的项目。
  2. 右击Libraries
  3. Select Add Jar/Folder.

使用 NetBeans 通过本地服务器设置数据库,并通过该连接 运行 SQL 语句。