Java、MySQL - 线程 "main" java.sql.SQLException 中的异常:ResultSet 关闭后不允许操作
Java,MySQL - Exception in thread "main" java.sql.SQLException: Operation not allowed after ResultSet closed
我正在尝试获取 ResultSet
的第一个元素。为什么我会收到此错误
public ResultSet executeSearch(String q){
openConnection();
ResultSet resultSet = null;
try{
Statement statement = connection.createStatement();
resultSet = statement.executeQuery(q);
closeConnection();
return resultSet;
}
catch (Exception e){
JOptionPane.showMessageDialog(null, e.getMessage());
}
finally {
closeConnection();
}
return resultSet;
}
public int getAddressID(String city) throws SQLException{
String q = "SELECT PK_ADDRESS_ID FROM tbl_addresses WHERE city =" + "\'"+ city + "\';";
System.out.println(q);
ResultSet rs = executeSearch(q);
int i = 0;
if (rs.next()){
i = rs.getInt(1);
};
return i;
}
您收到此错误是因为您在关闭 ResultSet
后尝试读取它 ,这是被禁止的。
您需要在您的方法 getAddressID
中关闭您的连接(和您的 ResultSet
),如下所示:
public ResultSet executeSearch(String q){
openConnection();
try {
return connection.createStatement().executeQuery(q);
} catch (Exception e){
JOptionPane.showMessageDialog(null, e.getMessage());
}
return null;
}
public int getAddressID(String city) throws SQLException{
...
try (ResultSet rs = executeSearch(q)) {
...
} finally {
closeConnection();
}
return i;
}
我正在尝试获取 ResultSet
的第一个元素。为什么我会收到此错误
public ResultSet executeSearch(String q){
openConnection();
ResultSet resultSet = null;
try{
Statement statement = connection.createStatement();
resultSet = statement.executeQuery(q);
closeConnection();
return resultSet;
}
catch (Exception e){
JOptionPane.showMessageDialog(null, e.getMessage());
}
finally {
closeConnection();
}
return resultSet;
}
public int getAddressID(String city) throws SQLException{
String q = "SELECT PK_ADDRESS_ID FROM tbl_addresses WHERE city =" + "\'"+ city + "\';";
System.out.println(q);
ResultSet rs = executeSearch(q);
int i = 0;
if (rs.next()){
i = rs.getInt(1);
};
return i;
}
您收到此错误是因为您在关闭 ResultSet
后尝试读取它 ,这是被禁止的。
您需要在您的方法 getAddressID
中关闭您的连接(和您的 ResultSet
),如下所示:
public ResultSet executeSearch(String q){
openConnection();
try {
return connection.createStatement().executeQuery(q);
} catch (Exception e){
JOptionPane.showMessageDialog(null, e.getMessage());
}
return null;
}
public int getAddressID(String city) throws SQLException{
...
try (ResultSet rs = executeSearch(q)) {
...
} finally {
closeConnection();
}
return i;
}