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 }