【问题标题】:querying embedded database in netbeans using derby使用derby查询netbeans中的嵌入式数据库
【发布时间】:2013-05-21 11:43:13
【问题描述】:

我已经使用 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)
    {
    }
}
}

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

【问题讨论】:

  • 您确定向其中添加数据的 CustDB 数据库与此 main 方法运行时类路径中的数据库相同吗?
  • @Tap,是的。在编写查询它的代码之前,我已经创建了一个 CustDB。
  • 不过,我还是会在文件系统中搜索 CustDB。如果它出现两次,那么您的程序创建了一个新的空数据库。
  • “您确定向其中添加数据的 CustDB 数据库与此 main 方法运行时类路径中的数据库相同吗?– 点击 4 小时前”。您能否详细说明您的问题?
  • CustDB 的文件系统?

标签: java netbeans derby


【解决方案1】:

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

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

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

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

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

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

【讨论】:

  • 好的,我知道了,但我无法在另一个系统上运行它,因为我想打包它以进行分发。
【解决方案2】:

我想对上一个答案添加一个重要的说明,因为我发现自己在试图使这个东西发挥作用的几个小时里有点迷失了。我的意思是让您了解 Netbeans 服务选项卡如何与嵌入式 derby 数据库一起使用。 使用时:

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

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

jdbc:derby:directory_path/CustDB;create=true 

所以当你执行你的程序时,它会在指定的路径中创建数据库。

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

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

jdbc:derby:CustDB;create=true

您在项目的目录路径中创建一个数据库。 为了能够从服务选项卡使用编辑此数据库,您必须创建一个到嵌入式数据库的新连接。您必须使用名称 CustDB、相同的用户应用和相同的密码应用。

这里很重要的是在URL中使用项目的目录路径,所以在窗口中创建连接时必须在URL字段中使用:

jdbc:derby:directory_path_of_the_project/CustDB;

现在如果你按下测试连接按钮,一切都会好起来的。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-19
    • 1970-01-01
    • 2014-11-07
    • 1970-01-01
    • 2018-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多