@Override public void postExecuteUpdate(Db db, Connection connection, PreparedStatement ps, int updatedResult) throws SQLException { ResultSet rs = null; try{ rs = ps.getGeneratedKeys(); if(rs.next()){ generatedIdCallback.accept(db.getDialect().getColumnValue(rs, 1)); }else{ throw new IllegalStateException("No generated key returned after the execution of sql : " + sql); } }finally{ JDBC.closeResultSetOnly(rs); } } }
@Override public void postExecuteUpdate(Db db, Connection connection, PreparedStatement ps, int updatedResult) throws SQLException { PreparedStatement ps1 = null; ResultSet rs = null; try{ ps1 = connection.prepareStatement(db.getDialect().getSelectCurrentSequenceValueSql(sequenceName)); rs = ps1.executeQuery(); if(rs.next()){ generatedIdCallback.accept(db.getDialect().getColumnValue(rs, 1)); }else{ throw new IllegalStateException("No current value of sequence '" + sequenceName + "' returned"); } }finally{ JDBC.closeResultSetOnly(rs); JDBC.closeStatementOnly(ps1); try { if(this.autoCommit){ connection.setAutoCommit(true); } } catch (Exception e) { log.warn("Error restoring the auto comment property of connection : " + e.getMessage(),e); } } } }
protected List<DbTableBuilder> readAllTables(Connection connection,DatabaseMetaData dm,MetadataParameters params) throws SQLException { ResultSet rs = null; try{ List<DbTableBuilder> tables = new ArrayList<>(); rs = getTables(connection, dm, params); if(null != rs){ while ( rs.next() ) { String tableCatalog = getTableCatalog(params, rs); String tableSchema = getTableSchema(params, rs); String tableName = rs.getString(TABLE_NAME); if(Strings.isEmpty(params.schema) || params.schema.equalsIgnoreCase(tableSchema)){ DbTableBuilder table = new DbTableBuilder(tableCatalog,tableSchema,tableName); readTableProperties(table, rs); tables.add(table); } } } return tables; }finally{ JDBC.closeResultSetOnly(rs); } }
@Override public void loadProperties(AppPropertySetter props) { Try.throwUnchecked(() -> { log.info("Load properties from db : {}", jdbcUrl); Class.forName(driverClassName); Statement stmt = null; ResultSet rs = null; Connection conn = null; try { log.debug("Obtain db connection..."); conn = DriverManager.getConnection(jdbcUrl, username, password); log.debug("Execute sql ->\n{}\n", sql); stmt = conn.createStatement(); rs = stmt.executeQuery(sql); int count = 0; while (rs.next()) { String key = rs.getString(1); String value = rs.getString(2); props.putProperty(this, key, value); count++; } log.info("Load {} properties from db!", count); } finally { JDBC.closeResultSetOnly(rs); JDBC.closeStatementOnly(stmt); JDBC.closeConnection(conn); } }); }
protected List<DbSequence> readAllSequences(Connection connection,DatabaseMetaData dm,MetadataParameters params) throws SQLException { ResultSet rs = null; try{ List<DbSequenceBuilder> sequences = new ArrayList<DbSequenceBuilder>(); rs = getSequences(connection, dm, params); if(rs != null){ while(rs.next()){ String sequenceCatalog = getSeqCatalog(params, rs); String sequenceSchema = getSeqSchema(params, rs); String sequenceName = rs.getString(SEQUENCE_NAME); if(Strings.isEmpty(params.schema) || params.schema.equalsIgnoreCase(sequenceSchema)){ DbSequenceBuilder sequence = new DbSequenceBuilder(sequenceName).setCatalog(sequenceCatalog).setSchema(sequenceSchema); if(readSequenceProperties(sequence, rs)){ sequences.add(sequence); } } } } return Builders.buildList(sequences); }finally{ JDBC.closeResultSetOnly(rs); } }
JDBC.closeResultSetOnly(rs); JDBC.closeResultSetOnly(rs);
JDBC.closeResultSetOnly(rs); JDBC.closeResultSetOnly(rs);
JDBC.closeResultSetOnly(rs); JDBC.closeResultSetOnly(rs);
throw new NestedSQLException(e, metadata.getProductName()); }finally{ JDBC.closeResultSetOnly(rs); JDBC.closeStatementOnly(ps);