java - JDBC DriverManager 在尝试连接数据库之前检测用户是否在网络上?

标签 java mysql jdbc database-connection

我正在开发一个 Java 应用程序,该应用程序可以连接到我的办公室网络,也可以不连接到我的办公室网络。

我的问题是,当用户未连接时,DriverManager.getConnection() 需要长达 20 秒的时间才能最终发布无法连接到数据库的消息。

将我连接或不连接到服务器的代码:

public static Connection getConnection() {
    try{
        //cnx is my Connection object
        if(cnx ==null || cnx.isClosed()){
            Class.forName("com.mysql.jdbc.Driver");

            //Get the connection if possible
            cnx = DriverManager.getConnection(connectionString, user, password);
        }
        /*
        Basically, I'm just checking if "ConfigUser.isConnected()" is true
        later in the code to know if I should try to execute SQL queries
        */
        ConfigUser.setConnected(true);
        return cnx;
    }
    catch (Exception e){
    }
    ConfigUser.setConnected(false);
    return null;
}

我尝试使用 DriverManager.setLoginTimeout() 函数,但它似乎没有改变任何内容。

最佳答案

添加到connectionString connect timeout in milliseconds :

&connectTimeout=5000

connectTimeout

Timeout for socket connect (in milliseconds), with 0 being no timeout. Only works on JDK-1.4 or newer. Defaults to '0'.

关于java - JDBC DriverManager 在尝试连接数据库之前检测用户是否在网络上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53152692/

相关文章:

java - 为 Java 中类的每个实例重写方法

java - 使用 Java 合并对 Map<String, Map<String, Integer>> 中的数字求和

php - 我如何添加一条显示 "$user_id Deleted"或 "$user_id not found?"的消息

java - ResultSet 中的内存不足 allocLargeObjectOrArray

java - JSF 中的重新渲染属性

java - 如何使用 Pattern.matches 和正则表达式来过滤字符串中不需要的字符

mysql - 如何查找数据库中值之间的关系

php mysqli_query 没有结果

java - 数据库管理 | SQL Server 连接错误

java - JDBC MySQL 存储不带 utf8mb4 编码的表情符号