我正在创建一个使用 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/