我的 JDBC 连接代码类似于 Java JDBC 教程中的以下代码:
public static void viewTable(Connection con) throws SQLException {
Statement stmt = null;
String query = "select COF_NAME, SUP_ID, PRICE, SALES, TOTAL from " + dbName + ".COFFEES";
try {
stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
String coffeeName = rs.getString("COF_NAME");
int supplierID = rs.getInt("SUP_ID");
float price = rs.getFloat("PRICE");
int sales = rs.getInt("SALES");
int total = rs.getInt("TOTAL");
System.out.println(coffeeName + "\t" + supplierID + "\t" + price + "\t" + sales + "\t" + total);
}
} catch (SQLException e ) {
JDBCTutorialUtilities.printSQLException(e);
} finally {
stmt.close();
}
}
我对这种处理连接方式的问题是它关闭了finally
块中的语句,并且该方法抛出了任何可能发生的 SQLException。我不想这样做,因为我希望在这个类中处理任何问题。但是,我确实希望Statement#close()
在 finally 块中调用它,以便它始终关闭。
现在我将此代码放在一个单独的方法中,该方法返回一个返回HashMap
的字段,该异常在类中处理。还有另一种可能更好的方法来处理这个问题吗?
编辑:close()
SQLException 是我所关心的。如果可能的话,我想在方法中处理它。我可以在 finally 中写一个 try/catch,但这看起来真的很尴尬。