Java JDBC チュートリアルの次のような 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 をスローすることです。このクラス内で問題を処理したいので、私はそれをしたくありません。ただし、常に閉じられるように、finally ブロックでその呼び出しが必要です。Statement#close()
現在、このコードを別のメソッドに配置しています。このメソッドはHashMap
、例外がクラス内で処理されるように返されたフィールドの 1 つを返します。これを処理する別の、おそらくより良い方法はありますか?
編集: close()
SQLException は私が懸念しているものです。可能であれば、メソッド内で処理したいと思います。finally に try/catch を書くこともできますが、それは非常に厄介です。