gpt4 book ai didi

java - 在 Java 中设置 Oracle 10g 数据库连接超时

转载 作者:行者123 更新时间:2023-11-30 07:35:09 24 4
gpt4 key购买 nike

我尝试使用以下代码设置连接超时:

public class ConnectionTimeout {  
public static void main(String[] args) throws Exception {

String entry = "jdbc:oracle:thin:@xxx:1521:xxx";
Connection con=null;

Class.forName("oracle.jdbc.driver.OracleDriver");

DriverManager.setLoginTimeout(1);
con=DriverManager.getConnection(entry,"username","password");

Statement s=con.createStatement();
s.execute("select 1 from dual");
s.close();

con.close();
}
}

实例 xxx 不存在。但是我得到以下异常:

Exception in thread "main" java.sql.SQLException: E/A-Exception: Socket is not connected
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:439)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at my.package.connection.timeout.ConnectionTimeout.main(ConnectionTimeout.java:22)

如何对不存在或不可用的 Oracle 数据库实例实现超时?

编辑:如果我将 DriverManager.setLoginTimeout(30); 设置为 30 秒,异常发生的速度和以前一样快!

最佳答案

您的DriverManager.setLoginTimeout(1); 设置驱动程序在连接到数据库时等待的最长时间。在您的例子中,它设置为 1。

要没有限制,请设置 setLoginTimeout(0),其中 0 表示没有限制。

希望对您有所帮助。


更新 如果您的实例 xxx 不存在,您希望 Oracle 驱动程序如何连接到数据库?您将 loginTimeout 设置多长时间没有任何区别,没有“主机”可以连接。

关于java - 在 Java 中设置 Oracle 10g 数据库连接超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4669052/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com