SQL try catch永远不会捕获(实现超时?)

时间:2014-08-20 09:47:25

标签: java

在我的代码中,我在SQL连接部分尝试了一下。我希望用户能够自己输入Sql地址和端口号。如果用户输入了错误的sql地址或端口,那么应用程序只会在try中挂起,并且永远不会实际停止并进入catch。有小费吗?我想编程尝试X秒,然后以“输入错误的连接信息”之类的错误消息结束。

这是代码:

System.out.print("Connecting");

    try {
        String myDriver = "org.gjt.mm.mysql.Driver";

        String myUrl = "jdbc:mysql://"+mySqlAdress+":"+myPort+"/mysql";
        Class.forName(myDriver);
        Connection conn = DriverManager.getConnection(myUrl, "root", "1234");
         String SQL = "SELECT asd,val FROM test";
        ResultSet rs = conn.createStatement().executeQuery(SQL);
           while (rs.next()) {
           //do something
        }
    } 
  catch (Exception e)
 {

  System.err.println("Got an exception! ");
  System.err.println(e.getMessage());
}
}

2 个答案:

答案 0 :(得分:1)

也许您应该在尝试连接之前通过调用DriverManager#setLoginTimeout(...)来自己添加连接超时。

本着同样的精神,请注意可以在任何类型的SQL语句(无论是PreparedStatement还是CallableStatement)上调用Statement#setQueryTimeout(...)

答案 1 :(得分:0)

你能试试吗;

Class.forName("com.mysql.jdbc.Driver");

http://dev.mysql.com/downloads/connector/j/

connect = DriverManager
          .getConnection("jdbc:mysql://localhost/youradress?"
              + "user=youruser&password=yourpassword");