数据源拒绝建立java连接
错误: 我通过ajax从servlet请求一些信息 代码: 连接:数据源拒绝建立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)
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
}