java - 引发异常 [com.mysql.jdbc.CommunicationsException : Communications link failure due to underlying exception:

标签 java mysql csv jdbc tomcat8

在我的 java web 应用程序中,我正在连接到本地 MySQL 数据库。使用 servlet,我获取一个 csv 文件并将数据插入数据库。它连接良好并且正在插入数据,但在每次从 csv 文件插入后它开始逐渐变慢。当它到达 csv 文件中的第 159 行时,它会抛出此异常:

抛出异常

[com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:

java.net.SocketException MESSAGE: Permission denied: connect

堆栈跟踪:

java.net.SocketException: Permission denied: connect

有谁知道为什么它会正常工作然后变慢直到抛出这个异常?我真的很想知道这个,网上似乎没有任何帮助。对了,我用的是tomcat8。

最佳答案

正如您已经发现的那样,您获得的异常来自您打开太多连接以达到限制的原因。

要正确关闭与数据库的连接,基本上需要三个步骤。

  1. 关闭 ResultSet(如果有的话)
  2. 关闭语句对象
  3. 关闭连接对象

典型的代码如下:

try {
    //your code that is making and using jdbc is here

    //after you finish
    rs.close(); //if a ResultSet was returned
    stmt.close(); //Close Statement
    conn.close(); //Close Connection
}catch(SQLException se){
}catch(Exception e){
}finally{
    //finally block used to close resources if Closing failed above
    try{
       if(stmt!=null)
          stmt.close();
    }catch(SQLException se2){
    }// nothing we can do
    try{
       if(conn!=null)
          conn.close();
    }catch(SQLException se){
       se.printStackTrace();
    }//end finally try
}//end try

有关完整示例,请参阅 this

关于java - 引发异常 [com.mysql.jdbc.CommunicationsException : Communications link failure due to underlying exception:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29641784/

相关文章:

java - 在 Eclipse 中使用指定的类加载器加载单例

java - Jinput init 的 Controller up 和 left 为 true

mysql - 仅当语句为 true 时才插入

java - 如果存在则使用值否则使用默认值 MySQL

c - 将 CSV 文件中的数据添加到结构中

java - 无用号码计算结果

java - Android - Kotlin Serializable 与 Java Serializable,性能是否相同?

MySQL:查询以获取每周的日志条目数——包括空集

python - 我不知道为什么我得到一个空白的输出文件

c# - 在 DataGridView 中读取 CSV 文件