【问题标题】:Connection to derby database refused与 derby 数据库的连接被拒绝
【发布时间】:2015-04-13 04:58:06
【问题描述】:

我正在学习 Java,并尝试编写一个简单的应用程序,其中包含一些连接到可以更新的数据库的 jTables。为此,我通过 Netbeans 创建了一个数据库,其中包含一些我理解(并希望)的表嵌入到最终的可分发应用程序中。

我正在关注 Youtube 上的编程知识教程来创建大部分 GUI。只要我打开 Netbeans 上的“服务”选项卡并手动右键单击我的数据库(testDB)并单击“启动服务器”,Everting 就可以了。然后,当我运行以下代码时,我获得了成功的连接:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        try{
            //Register JDBC driver
            Class.forName("org.apache.derby.jdbc.ClientDriver");
            //Open a connection
            String DB_URL = "jdbc:derby://localhost:1527/testDB";
            String u_name = jTextField1.getText();
            String p_word = jPasswordField1.getText();
            conn = DriverManager.getConnection("jdbc:derby://localhost:1527/testDB",u_name,p_word);
            JOptionPane.showMessageDialog(null,"Details Correct - Connection established");
            Close_me();
            Open_Table_GUI(u_name,p_word);


        }
        catch(ClassNotFoundException | SQLException e){
            System.out.println(e);
        }        
}                                        

但是,如果我在不手动单击启动服务器的情况下运行该代码,我会得到以下信息:

java.sql.SQLNonTransientConnectionException: java.net.ConnectException : Error       connecting to server localhost on port 1,527 with message Connection refused.

我已经阅读了 apache 文档,但由于我缺乏经验,我一无所获。

我还在这里查看了类似连接问题的答案,但我似乎无法以一种有效的方式来联系这个问题。

我的最终目标是拥有一个可以分发以在 Windows 机器上运行的应用程序,该应用程序将包含所有的数据库/表,可单独编辑等。我希望最终创建一个驻留在共享驱动器上的数据库,并且每个个人可以自动连接 - 但目前还不能这样。

我在这里的要求是有人可以帮助我了解我需要在我的代码中更改什么,以便自动完成“启动服务器”。

提前感谢您的回复。

【问题讨论】:

    标签: java netbeans derby embedded-database


    【解决方案1】:

    好的,伙计们,我从LMS这里提出的问题中找到了似乎对我有用的代码

    private void setup(){
        try{
            Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
            connection=DriverManager.getConnection("jdbc:derby:sheet;create=true","test","1234");
            statement=connection.createStatement();
        }
    
        catch(ClassNotFoundException cnf){
            System.out.println("class error");
        }
    
        catch(SQLException se){
            System.out.println(se);
        }
    }
    

    如果有人愿意告诉我为什么这实际上可以很好地工作的原因,我假设嵌入式驱动程序不通过端口而只是在项目中查看??

    无论如何,这似乎已经解决了!!

    【讨论】:

      【解决方案2】:

      请检查您的服务器设置,即 - 程序中的用户名和密码 并检查您是否启动了 Derby 服务器,它是否在端口 1527 上侦听?

      【讨论】:

      • 密码是正确的用户名,只要我在 Netbeans 环境中启动服务器,一切正常 - 我的问题是如何以编程方式启动它?或者在我上面找到的答案中,我在哪里可以找到嵌入式驱动程序和我使用的驱动程序 ClientDriver 之间的区别。我认为差异是显而易见的,但 JVM/Derby 如何以不同的方式解释这些?
      • 我认为有关 Embedded 和 Client/Server Derby 之间差异的最佳信息来源是 Derby 手册。从这里开始:db.apache.org/derby/docs/10.11/getstart
      猜你喜欢
      • 2012-05-12
      • 2013-04-22
      • 1970-01-01
      • 2017-11-03
      • 1970-01-01
      • 1970-01-01
      • 2021-12-01
      • 2023-03-12
      • 1970-01-01
      相关资源
      最近更新 更多