使用derby在netbeans中查询嵌入式数据库

我使用netbeans创建了一个嵌入式数据库并向其添加了数据。 所以现在我想查询数据库,代码运行流畅但不显示数据。 这是我的代码:

import java.sql.*; public class EmbeddedDB { public static void main(String[] args) { Connection con = null; Statement st = null; ResultSet rs = null; try { Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); con = DriverManager.getConnection("jdbc:derby:CustDB;create=true", "app", "app"); System.out.println("connected"); st = con.createStatement(); System.out.println("statement created"); rs = st.executeQuery("select * from APP.TABLEX"); System.out.println("retrieving ..."); System.out.println(rs.getString(1)); } catch(ClassNotFoundException | SQLException c) { } } } 

那可能是什么问题? 数据库是以嵌入模式创建的。

您告诉我们, I have created an embedded database ... and added data to it.

因此,此数据库必须在Netbeans Services中可见。

在此处输入图像描述

;create=true
您应该使用在属性中看到的相同URL进行连接。 而已。
展开数据库URL或查看底部。

在此处输入图像描述

  con = DriverManager.getConnection("jdbc:derby:C:/Dokumente und Einstellungen/Administrator/.netbeans-derby/sample","app","app"); 

在嵌入式模式下,Derby在应用程序的JVM(Java虚拟机)中运行。 在此模式下,只有应用程序可以访问数据库,例如,另一个用户/应用程序将无法访问数据库。

只有一个应用程序可以访问数据库。
因此,请断开Netbeans Services,即要在应用程序中连接的数据库。

我想对前面的答案添加一个重要的澄清,因为我发现自己在试图使这个东西function化的几个小时内有点迷失。 我的意思是让您了解Netbeans服务选项卡如何与嵌入式德比数据库配合使用。 使用时:

  con = DriverManager.getConnection("jdbc:derby:CustDB;create=true", "app", "app"); 

它在与netbeans项目相同的目录中创建数据库。 您可以通过添加目录路径来更改此行为:

 jdbc:derby:directory_path/CustDB;create=true 

因此,当您执行程序时,它将在指定的路径中创建数据库。

现在,当您在服务选项卡中创建与嵌入式数据库的连接时,您将连接到现有数据库或创建新数据库。 我将使用格林的例子:

一旦你第一次执行第一篇post中的代码

 jdbc:derby:CustDB;create=true 

您在项目的目录路径中创建数据库。 要从服务选项卡使用编辑此数据库,必须创建与嵌入式数据库的新连接。 您必须使用名称CustDB,相同的用户应用程序和相同的密码应用程序。

这里非常重要的是在URL中使用项目的目录路径,因此在URL字段中创建连接的窗口中,您必须使用:

 jdbc:derby:directory_path_of_the_project/CustDB; 

现在,如果按下测试连接按钮,一切都应该没问题。

如果在此处使用create=true而不使用项目的目录路径,则将创建另一个具有相同名称,相同用户和密码但位于不同位置的数据库。 稍后您将发现自己在代码中对数据库进行了更改,而没有在服务选项卡的数据库中看到它们。