java - 设置 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 错误。
解决方案
如果您在 Netbeans 中运行代码,问题是 JVM 找不到 Apache Derby 的驱动程序,这些驱动程序通常(来自 JDBC 4.0+)是从类路径自动加载的。
请记住,为了成功获得数据库连接,首先必须在 CLASSPATH 中存在 DB 供应商驱动程序文件(在本例中为derby.jar、derbytools.jar和derbyoptionaltools.jar),事实上这是正是本书指导您创建数据库时所做的事情。
因此,在您的情况下,您必须在项目依赖项中添加这些库。
我从未使用过 Netbeans,但这个答案会对您有所帮助:如何在 NetBeans 中设置类路径?
我在这里报告要执行的步骤:
- 右键单击您的项目。
- 选择
Properties
。 - 在左侧单击
Libraries
。 - 在编译选项卡下 - 单击
Add Jar/Folder
按钮。
或者
- 展开您的项目。
- 右键单击
Libraries
。 - 选择
Add Jar/Folder
。
推荐阅读
- mysql - 使用 tableplus 连接 laravel 数据库
- regex - 正则表达式重定向帮助 - 更改子文件夹但保留路径的其余部分相同
- node.js - Webhooks Directus 9 - 当用户在表中创建记录时发送电子邮件
- php - 如何根据小计和类别在购物车中添加 woocommerce 产品
- amazon-web-services - Can we create multiple Amazon DynamoDB tables at a time using AWS CloudFormation Template?
- android - Google Fit API 无限加载同意屏幕
- geolocation - W3C Geolocation API 是否比非移动设备的 IP 地理定位更准确?
- xamarin - Xamarin - 如何抛出未处理的异常来测试 AppDomain.CurrentDomain.UnhandledException 方法
- laravel - 如何在不重定向无效输入的情况下使用 FormRequest 进行验证?
- npm - 我该如何解决 [错误] 找不到与模式匹配的文件:npx prettier --write $(git diff HEAD origin/master --name-only)