java - 一段时间后加载 MySQL 时出错

标签 java mysql timer refresh

我正在创建一个使用 JDBC 从数据库(MySQL)加载数据的应用程序。我的应用程序在一段时间内(大约 50 分钟)运行良好。该程序使用计时器,因此我可以刷新一些 JFrame 以显示数据库中的更改。

问题是,一段时间后,它显示从数据库加载错误,并且不显示加载特定表的错误,而是随机加载表。

我使用此代码从数据库加载,并且我对数据库的许多表多次使用它

package Mysql;


public class SQLRoom {
public Connection con = null;
public Statement statement= null;
public String JDBC_DRIVER = "com.mysql.jdbc.Driver";
public String username = new String("bonis");
public String password = new String("bonis");
static String dbname = "jdbc:mysql://localhost/pbx";

public String selectRoom_ExtByRoom_Room(String room) {
    try {
        Class.forName(JDBC_DRIVER);
        con = DriverManager.getConnection(dbname,username,password);
        statement= con.createStatement();

        String query = "select * from room where room_room = '" +room+"'";

        String phoneNumber = null;

        final ResultSet rs1=statement.executeQuery(query);
        while (rs1.next()) {

            phoneNumber =rs1.getString("room_ext");

        }
        return phoneNumber;

    }
    catch (final Exception e) {
        JOptionPane.showMessageDialog(null,"SQLRoom selectRoom_ExtByRoom_Room  room:" +room+" room length"+ room.length());
        return null;
    }

}

}

任何帮助。

最佳答案

当您使用finally退出try-catch block 时,请务必关闭您的语句。您的连接也是如此。更好更快的是重用连接并在程序结束时关闭它。

在 java 7 中你可以这样做:

try (Connection con = DriverManager.getConnection(dbname, username, password);
      Statement statement = con.createStatement()) {
   ..CODE..
}

在旧版 java 中:

尝试{

    //YOUR CODE

  } catch (final Exception e) {

     //YOUR CODE

  } finally {
     try {
        if (statement != null) {
           statement.close();
        }
     } catch (SQLException e) {
        // error handling
     }

     try {
        if (con != null) {
           con.close();
        }
     } catch (SQLException e) {
     // error handling
     }
  }

关于java - 一段时间后加载 MySQL 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15455681/

相关文章:

mysql - 使用 WHERE 选择 LEFT/RIGHT JOIN 并返回 NULL

java - 启动计时器后向普罗米修斯直方图添加标签

c++ - boost::asio::high_resolution_timer 用法示例?

java - Spring @Scheduled 默认值

用于显示 SQL 表的列中的行数的 Java 应用程序脚本。 SQL 查询错误。输出应该在标签中

java - Spring saml 演示构建问题

java - Spring Boot - 返回日期(不是时间戳)

mysql - 在 Mysql 中创建逻辑 View 的查询应该是什么?

mysql - 了解MySQL如何获取具有相同用户id的数据

delphi - 计时器自行停止