View Javadoc

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  }