使用Java检查SQL Server是否在线

时间:2014-07-18 08:06:00

标签: java sql sql-server multithreading

他使用jdbc将简单的Java应用程序连接到SQL服务器。 它工作得很好。 我想在应用程序中添加一个额外内容,我想通过更改标签的颜色来通知用户数据库是否可以访问。 现在我正在使用这个功能:

 private static Connection getDBConnection() {

    Connection dbConnection = null;

    try {

        Class.forName(DB_DRIVER);

    } catch (ClassNotFoundException e) {

        System.out.println(e.getMessage());

    }

    try {

        dbConnection = DriverManager.getConnection(DB_CONNECTION, DB_USER,
                DB_PASSWORD);
                    System.out.println("Connection Good");
        return dbConnection;

    } catch (SQLException e) {

        System.out.println(e.getMessage());
                    System.out.println("Connection BAD");

    }

    return dbConnection;

}

我不确定这是否是最佳方式。 我必须验证连接是否成功并立即关闭连接。 如果我有一个异常验证连接我们关闭连接我的线程死了......

是否有最好的方法来验证数据库是否可以访问? 有什么建议 ?谢谢

1 个答案:

答案 0 :(得分:2)

我会添加一个虚拟查询来完全确定。这可能不是第一次连接似乎是服务器无法访问:

try {

       dbConnection = DriverManager.getConnection(DB_CONNECTION, DB_USER,
                DB_PASSWORD);
                    System.out.println("Connection Good");
       try(Statenent st = dbConnection.createStatement();)
       {
          try(ResultSet res = st.executeQuery("SELECT 1 AS C"))
          {
              if(res.getInt("C") != 1)
                  throw  new SQLException();
          }
       }
    } catch (SQLException e) {

        System.out.println(e.getMessage());
                    System.out.println("Connection BAD");

    }

    return dbConnection;

}