【问题标题】:Can't connect to Oracle DB via JDBC on java desktop app无法在 Java 桌面应用程序上通过 JDBC 连接到 Oracle DB
【发布时间】:2012-03-11 00:10:58
【问题描述】:

我试图创建一个非常简单的应用程序,在加载主窗口时程序连接到数据库。

如果我评论与数据库的连接部分,它可以正常工作。该应用程序没有显示错误,也没有抛出异常,所以我无法弄清楚出了什么问题。我发布我的代码:

public final class Database {
    private final String dbURL = "jdbc:oracle:thin:@" + dbHost + ":" + dbPort + ":" + dbService;
    private final String dbDriver = "oracle.jdbc.driver.OracleDriver";
    private Connection connection = null;

    public Database() {
        try {
            System.out.println("Aqui 1");
            Class.forName(dbDriver);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(Database.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    private void connect() {
        System.out.println("Dentro");
        try {
            connection = DriverManager.getConnection(dbURL, dbUser, dbPass);
        } catch (SQLException ex) {
            Logger.getLogger(Database.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    private void disconnect() {
        try {
            connection.close();
        } catch (SQLException ex) {
            Logger.getLogger(Database.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void numeroErrores(String dependencia){
        System.out.println("Hola");
        connect();
        disconnect();
        System.out.print("Adios");
    }
}

dbUser, dbPass, dbHost, dbPort, dbService 设置为正确的值,我已经检查并重新检查了它们,而且我确定我已经添加了正确的 oracle-jdbc jar 文件。调用connect() 方法时,它有点挂起(我说是因为没有错误,没有显示任何内容,但 System.out.println 我放在那里)。

有什么想法吗?

【问题讨论】:

  • 你如何调试这个?我们需要某种例外。
  • 没有例外,没有什么,我在 NetBeans 中工作并使用它的调试器查看我是否可以看到一些东西,但没有... 知道有什么问题吗?我可以查看调试以将其发布在这里吗?
  • 您确定端口已打开(防火墙 - 本地或介于两者之间)并且侦听器接受来自您主机的远程连接吗?我经常使用基于 java 的查询工具来确保通过 java 进行远程连接。

标签: java oracle jdbc database-connection


【解决方案1】:

没有足够的调试打印或捕获语句
尝试同时捕获一般异常和 Throwable,看看是否添加了数据
如果您没有调试器,请在每一行添加调试打印,以便您确切知道自己在哪里
如果您有 ojdbc6.jar,请尝试在 DriverManager.getConnection 之前添加它:

DriverManager.registerDriver(new oracle.jdbc.OracleDriver());

只是为了确保

【讨论】:

  • 尝试了一般异常和 Throwable 并且根本没有任何消息。我正在使用 ojdbc6.jar 并尝试使用您发布的线路,但什么也没有。使用一些打印我发现之前的 connection = DriverManager.getConnection() 它工作正常,但由于某种原因,程序永远不会通过该行,可能是 getConnection() 方法内的循环。
  • 连接超时可能很长 - 最多几分钟。您可以等待 3 到 5 分钟,然后查看是否出现连接超时。你能ping通数据库机器吗?
  • 我会让应用程序运行直到(希望)显示某些内容。 db 机器没问题,我正在使用 sqlDeveloper 进行一些查询。如果显示超时,我会发布。
  • 确实,IO Error: The Network Adapter could not establish the connection
  • 这是一个常规的连接问题,要么是ip,要么是端口错误。尝试使用服务器名称而不是 ip,或者其他方式
猜你喜欢
  • 2013-09-29
  • 2015-03-12
  • 2021-08-31
  • 1970-01-01
  • 2016-09-21
  • 1970-01-01
  • 1970-01-01
  • 2016-09-12
  • 2023-04-01
相关资源
最近更新 更多