首页 > 解决方案 > 设置 Java 数据库

问题描述

我正在尝试为编程类设置 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 set 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 ( Connection connection = 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: Database 'books' not found。在 org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) 在 org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) 在 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(Unknown Source) at org.apache.derby.impl.jdbc.EmbedConnection.(Unknown Source) at org.apache.derby.jdbc.InternalDriver$1.run(Unknown Source) at org.apache.derby.jdbc .InternalDriver$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at org.apache.derby.jdbc.InternalDriver。

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

标签: javajdbcderby

解决方案


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

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

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

或者

  1. 展开您的项目。
  2. 右键单击Libraries
  3. 选择Add Jar/Folder

推荐阅读