登録以外の処理をする際に利用できるようにcloseメソッドでまとめようと考えています。
closeメソッドのConnectionとPreparedStatementをnullではなく実際に利用しているinsertメソッドからConnectionとPreparedStatementを持ってきてクローズしたいのですがどのように持ってくるのかがわかりません。
ご教授頂ければ幸いです。
Dao
1import java.sql.Connection; 2import java.sql.DriverManager; 3import java.sql.PreparedStatement; 4import java.sql.SQLException; 5 6public class Dao { 7 private static final String URL = "jdbc:mysql://localhost:3306/aaa?characterEncoding=UTF-8&serverTimezone=JST"; 8 private static final String USER = "bbb"; 9 private static final String PASS = "ccc"; 10 private static final String DRIVE = "com.mysql.cj.jdbc.Driver"; 11 12 private Connection getConnection() throws SQLException, ClassNotFoundException { 13 Connection con = null; 14 Class.forName(DRIVE); 15 con = DriverManager.getConnection(URL, USER, PASS); 16 con.setAutoCommit(false); 17 return con; 18 } 19 20 void close() throws SQLException, ClassNotFoundException { 21//ここのConnectionとPreparedStatementの部分です。 22 Connection con = null; 23 PreparedStatement ps = null; 24 try { 25 if (ps != null) { 26 ps.close(); 27 } 28 } catch (SQLException e) { 29 e.printStackTrace(); 30 } 31 try { 32 if (con != null) { 33 con.close(); 34 } 35 } catch (SQLException e) { 36 e.printStackTrace(); 37 } 38 } 39 public void insert(Dto dto) throws SQLException { 40 PreparedStatement ps = null; 41 Connection con = null; 42 try { 43 con = getConnection(); 44 45StringBuilder INSERT_SQL = new StringBuilder(); 46 INSERT_SQL.append("INSERT INTO aaa ("); 47 INSERT_SQL.append("ID,"); 48 INSERT_SQL.append("name,"); 49 INSERT_SQL.append("remarks)"); 50 INSERT_SQL.append("VALUES (?,?,?)"); 51 String sql = INSERT_SQL.toString(); 52 ps = con.prepareStatement(sql); 53 ps.setInt(1, dto.getID()); 54 ps.setString(2, dto.getName()); 55 ps.setString(3, dto.getRemarks()); 56 ps.executeUpdate(); 57 con.commit(); 58 } catch (ClassNotFoundException | SQLException e) { 59 con.rollback(); 60 } finally { 61 close(); 62 } 63 } 64}
回答2件
あなたの回答
tips
プレビュー