【发布时间】:2014-12-18 12:01:13
【问题描述】:
@Joeblade 建议我将数据库连接逻辑移动到一个单独的方法,如果不是一个单独的类,因为用户界面类已经非常混乱,有很多用户界面代码,所以添加 db 对可读性没有帮助代码给它。如果需要,这也将有助于重用数据库代码。我做的。但现在,我的问题是关于关闭资源。
static Connection getConnection() {
return connection;
}
public ResultSet Execute_Query(String queryIn) throws SQLException {
ResultSet resSet = null;
try {
connection = TableWithBottomLine.getConnection();
Statement stmt = null;
stmt = connection.createStatement();
resSet = stmt.executeQuery(queryIn);
} catch (SQLException e) {
e.printStackTrace();
}
return resSet;
}
public String textForLabel() throws SQLException{
List<Float> floatArrayList = new ArrayList<Float>();
String query ="SELECT f.Flat, f.Mobile, f.Food, f.Alcohol, f.Transport, f.Outdoor, f.Pauls_stuff, f.Stuff FROM finance.fin f WHERE f.tbl_Date >= DATE_FORMAT( NOW( ) , '%Y-%m-10' ) + INTERVAL IF( DAY( NOW( ) ) >10, 0 , -1 ) MONTH AND f.tbl_Date <= CURDATE( ) ";
try {
ResultSet rs = null;
rs = Execute_Query(query);
while (rs.next()){
floatArrayList.add(rs.getFloat("Flat"));
floatArrayList.add(rs.getFloat("Mobile"));
floatArrayList.add(rs.getFloat("Food"));
floatArrayList.add(rs.getFloat("Alcohol"));
floatArrayList.add(rs.getFloat("Transport"));
floatArrayList.add(rs.getFloat("Outdoor"));
floatArrayList.add(rs.getFloat("Pauls_stuff"));
floatArrayList.add(rs.getFloat("Stuff"));
}
} catch(SQLException ee){
ee.printStackTrace();
}
// Irrelevant stuff down below.....
- 是否必须在 Execute_Query() 方法中关闭 Connection、Statement、ResultSet 并在 textForLabel() 方法中关闭 ResultSet(仅)?
- 如何使用 try-with-resources 功能关闭?
【问题讨论】:
-
在方法中没有方法之类的东西。方法中只能有 OBJECTS - 可能包含方法,除了 lba-construction 之外,它们具有不同的范围,或多或少是孤立的。
-
谢谢。我编辑了标题。
-
你让事情变得更糟了,你的代码中没有一个 lambda - 因此范围不同。
标签: java mysql sql database resources