1 package com.imcode.db; 2 3 import java.sql.Connection; 4 import java.sql.SQLException; 5 import java.sql.PreparedStatement; 6 import java.sql.Statement; 7 import java.sql.ResultSet; 8 9 public class JdbcUtils { 10 11 private JdbcUtils() { 12 } 13 14 public static Number executeUpdateAndGetGeneratedKey(Connection connection, String sql, Object[] parameters) throws SQLException { 15 PreparedStatement preparedStatement = null; 16 try { 17 preparedStatement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); 18 setPreparedStatementParameters(preparedStatement, parameters); 19 preparedStatement.executeUpdate(); 20 ResultSet generatedKeysResultSet = preparedStatement.getGeneratedKeys(); 21 try { 22 Number result = null; 23 if (generatedKeysResultSet.next()) { 24 result = (Number) generatedKeysResultSet.getObject(1); 25 } 26 return result; 27 } finally { 28 generatedKeysResultSet.close(); 29 } 30 } finally { 31 if (null != preparedStatement) { 32 preparedStatement.close(); 33 } 34 } 35 } 36 37 public static void setPreparedStatementParameters(PreparedStatement preparedStatement, Object[] parameters) throws SQLException { 38 for (int i = 0; i < parameters.length; i++) { 39 preparedStatement.setObject(i + 1, parameters[i]); 40 } 41 } 42 }