Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数据源拒绝建立java连接_Java_Mysql_Ajax_Servlets - Fatal编程技术网

数据源拒绝建立java连接

数据源拒绝建立java连接,java,mysql,ajax,servlets,Java,Mysql,Ajax,Servlets,错误: 我通过ajax从servlet请求一些信息 代码: 连接: String UDD = null; try { DBConnect Database = new DBConnect(); Connection con = Database.getcon(); String query="SELECT UDD FROM userS WHERE UID=?;"; PreparedStatement ps = con.prepareStatement(query)

错误:

我通过ajax从servlet请求一些信息

代码:

连接:

String UDD = null;
try {
    DBConnect Database = new DBConnect();
    Connection con = Database.getcon();
    String query="SELECT UDD FROM userS WHERE UID=?;";
    PreparedStatement ps = con.prepareStatement(query);
    ps.setString(1, UID);
    ResultSet rs=ps.executeQuery();
    if(rs.next()){
        UDD=rs.getString(1);
    }
    ps.close();
    rs.close();
    con.close();
} catch (SQLException e) {
    e.printStackTrace();
}
用户每次单击按钮时都会发出请求,该请求由ajax执行。我的servlet以更多新信息响应。第一次对此servlet发出的请求工作正常,但第二次它输出该异常

异常在第
PreparedStatement ps=con.prepareStatement(查询)行抛出

根据我的谷歌搜索,我发现这基本上是由于连接泄漏,可以通过重新启动MySql服务器或更改其端口号来修复。但这对我不起作用。

错误“连接太多”表明已达到打开连接的数据库限制。一种解决方案可能是按数据库配置允许的最大连接数

可能更可取的做法是在使用连接后适当关闭连接。这可以在try…finally块中安全地完成,如下所示:

public DBConnect(){
    try{
        Class.forName("com.mysql.jdbc.Driver");
        con = DriverManager.getConnection("jdbc:mysql://localhost:10021/db?useSSL=false", "root", "PASSWORD");
        st = con.createStatement();
    }catch(Exception ex){
        System.out.println(ex.getMessage());
        System.out.println("couldn't connect!");
    }
}
public Connection getcon(){
    DBConnect condb = new DBConnect();
    Connection connect = con;
    return con;
}
由于
Connection
实现了
AutoClosable
这可以通过使用资源来简化,因为Java7:

Connection con;
try {
    con = Database.getcon();
} finally {
    if (con != null) {
        con.close();
    }
}
关闭连接会处理其他JDBC资源以及JavaDoc状态:

立即释放此
连接
对象的数据库和JDBC资源,而不是等待它们自动释放


我很抱歉我的回复太晚了,不管怎么说,根据你的帖子,我没有按照下面的评论去做,但是仍然没有成功
Connection con=null;PreparedStatement ps=null;结果集rs=null;请尝试{DBConnect Database=new DBConnect();con=Database.getcon();try{String query=“SELECT UDD FROM userS WHERE UID=?;”;ps=con.prepareStatement(query);ps.setString(1,UID);rs=ps.executeQuery();if(rs.next()){UDD=rs.getString(1);}}catch(SQLException e){e.printStackTrace();}最后{if(con!=null){try{con.close();ps.close();rs.close();}catch(SQLException e){e.printStackTrace();}}}
Connection con;
try {
    con = Database.getcon();
} finally {
    if (con != null) {
        con.close();
    }
}
try (Connection con = Database.getcon()) {
    // implementation
}