Refine search
private static Long executeInsert(PreparedStatement preparedStatement, Object... values) throws SQLException { for (int i = 0; i < values.length; i++) { preparedStatement.setObject(i + 1, values[i]); } preparedStatement.executeUpdate(); ResultSet rs = preparedStatement.getGeneratedKeys(); if (rs.next()) { return rs.getLong(1); } else return null; }
/** * Returns the key that was generated from the given statement, or <code>null</code> if no key * was generated or it could not be determined. * * @param stmt the statement that generated a key * @return the key that was generated from the given statement, or <code>null</code> if no key * was generated or it could not be determined. */ private String determineGeneratedKey(final PreparedStatement stmt) { try { final ResultSet generatedKeys = stmt.getGeneratedKeys(); if (generatedKeys != null && generatedKeys.next()) { return generatedKeys.getString(1); } } catch (final SQLException sqle) { // This is not supported by all vendors. This is a best-effort approach. } return null; }
@Override public void handleGeneratedKeys(PreparedStatement ps, LongConsumer longConsumer) throws SQLException { try (final ResultSet generatedKeys = ps.getGeneratedKeys()) { while (generatedKeys.next()) { longConsumer.accept(generatedKeys.getLong(1)); //sqlStatement.addGeneratedKey(generatedKeys.getLong(1)); } } }
public long executeUpdate() throws SQLException { if (query != null) { try { statement.execute(); if (returnGeneratedKeys) { ResultSet resultSet = statement.getGeneratedKeys(); if (resultSet.next()) { return resultSet.getLong(1); } } } finally { statement.close(); connection.close(); } } return 0; }
private long insertBootstrapStartRow(Connection connection, String db, String table, String whereClause, String clientID,Long totalRows) throws SQLException { LOGGER.info("inserting bootstrap start row"); String sql = "insert into `bootstrap` (database_name, table_name, where_clause, total_rows, client_id) values(?, ?, ?, ?, ?)"; PreparedStatement preparedStatement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); preparedStatement.setString(1, db); preparedStatement.setString(2, table); preparedStatement.setString(3, whereClause); preparedStatement.setLong(4, totalRows); preparedStatement.setString(5, clientID); preparedStatement.execute(); ResultSet generatedKeys = preparedStatement.getGeneratedKeys(); generatedKeys.next(); return generatedKeys.getLong(1); }
/** * 获得所有主键<br> * * @param ps PreparedStatement * @return 所有主键 * @throws SQLException SQL执行异常 */ public static List<Object> getGeneratedKeys(PreparedStatement ps) throws SQLException { List<Object> keys = new ArrayList<Object>(); ResultSet rs = null; int i = 1; try { rs = ps.getGeneratedKeys(); if (rs != null && rs.next()) { keys.add(rs.getObject(i++)); } return keys; } catch (SQLException e) { throw e; } finally { DbUtil.close(rs); } } }
/** * 获得所有主键<br> * * @param ps PreparedStatement * @return 所有主键 * @throws SQLException SQL执行异常 */ public static List<Object> getGeneratedKeys(PreparedStatement ps) throws SQLException { List<Object> keys = new ArrayList<Object>(); ResultSet rs = null; int i = 1; try { rs = ps.getGeneratedKeys(); if (rs != null && rs.next()) { keys.add(rs.getObject(i++)); } return keys; } catch (SQLException e) { throw e; } finally { DbUtil.close(rs); } } }
/** * 获得自增键的值<br> * 此方法对于Oracle无效 * * @param ps PreparedStatement * @return 自增键的值 * @throws SQLException SQL执行异常 */ public static Long getGeneratedKeyOfLong(PreparedStatement ps) throws SQLException { ResultSet rs = null; try { rs = ps.getGeneratedKeys(); Long generatedKey = null; if (rs != null && rs.next()) { try { generatedKey = rs.getLong(1); } catch (SQLException e) { // 自增主键不为数字或者为Oracle的rowid,跳过 } } return generatedKey; } catch (SQLException e) { throw e; } finally { DbUtil.close(rs); } }
/** * 获得自增键的值<br> * 此方法对于Oracle无效 * * @param ps PreparedStatement * @return 自增键的值 * @throws SQLException SQL执行异常 */ public static Long getGeneratedKeyOfLong(PreparedStatement ps) throws SQLException { ResultSet rs = null; try { rs = ps.getGeneratedKeys(); Long generatedKey = null; if (rs != null && rs.next()) { try { generatedKey = rs.getLong(1); } catch (SQLException e) { // 自增主键不为数字或者为Oracle的rowid,跳过 } } return generatedKey; } catch (SQLException e) { throw e; } finally { DbUtil.close(rs); } }
ResultSet keys = st.getGeneratedKeys(); if (keys.next()) id = keys.getLong(1); return id;
/** * 用于获取 Db.save(tableName, record) 以后自动生成的主键值,可通过覆盖此方法实现更精细的控制 * 目前只有 PostgreSqlDialect,覆盖过此方法 */ public void getRecordGeneratedKey(PreparedStatement pst, Record record, String[] pKeys) throws SQLException { ResultSet rs = pst.getGeneratedKeys(); for (String pKey : pKeys) { if (record.get(pKey) == null || isOracle()) { if (rs.next()) { record.set(pKey, rs.getObject(1)); // It returns Long for int colType for mysql } } } rs.close(); }
@Override public void handleGeneratedKeys(PreparedStatement ps, LongConsumer longConsumer) throws SQLException { /* * There does not seem to be any way to find the generated keys from a Postgres JDBC driver * since getGeneratedKeys() returns the whole set of columns. This causes * bug #293 "The postgresql throws an exception when the PRIMARY KEY is not type long." * * See http://stackoverflow.com/questions/19766816/postgresql-jdbc-getgeneratedkeys-returns-all-columns * * Below we instead handle auto generated fields that can be retrieved as Long. This fix clearly only * works for generated fields that are also auto generated. */ try (final ResultSet generatedKeys = ps.getGeneratedKeys()) { while (generatedKeys.next()) { final int columnType = generatedKeys.getMetaData().getColumnType(1); if (generatedKeys.getMetaData().isAutoIncrement(1) && LONG_GETTABLE_TYPES.contains(columnType)) { longConsumer.accept(generatedKeys.getLong(1)); //sqlStatement.addGeneratedKey(generatedKeys.getLong(1)); } } } }
/** * 解决 PostgreSql 获取自增主键时 rs.getObject(1) 总是返回第一个字段的值,而非返回了 id 值 * issue: https://www.oschina.net/question/2312705_2243354 * * 相对于 Dialect 中的默认实现,仅将 rs.getXxx(1) 改成了 rs.getXxx(pKey) */ public void getRecordGeneratedKey(PreparedStatement pst, Record record, String[] pKeys) throws SQLException { ResultSet rs = pst.getGeneratedKeys(); for (String pKey : pKeys) { if (record.get(pKey) == null || isOracle()) { if (rs.next()) { record.set(pKey, rs.getObject(pKey)); } } } rs.close(); } }
@Signature public Memory getGeneratedKeys(Environment env) throws SQLException { ResultSet keys = statement.getGeneratedKeys(); if (keys != null && keys.next()) { return ObjectMemory.valueOf(new PSqlResult(env, keys)); } return Memory.NULL; }
private long writeDatabaseVersionHeaderInternal(Connection connection, DatabaseVersionHeader databaseVersionHeader) throws SQLException { try (PreparedStatement preparedStatement = connection.prepareStatement( DatabaseConnectionFactory.getStatement("databaseversion.insert.all.writeDatabaseVersion.sql"), Statement.RETURN_GENERATED_KEYS)) { preparedStatement.setString(1, DatabaseVersionStatus.MASTER.toString()); preparedStatement.setTimestamp(2, new Timestamp(databaseVersionHeader.getDate().getTime())); preparedStatement.setString(3, databaseVersionHeader.getClient()); preparedStatement.setString(4, databaseVersionHeader.getVectorClock().toString()); int affectedRows = preparedStatement.executeUpdate(); if (affectedRows == 0) { throw new SQLException("Cannot add database version header. Affected rows is zero."); } try (ResultSet resultSet = preparedStatement.getGeneratedKeys()) { if (resultSet.next()) { return resultSet.getLong(1); } else { throw new SQLException("Cannot get new database version ID"); } } } }
/** * Get id after save method. */ protected void setGeneratedKey(PreparedStatement pst, TableMeta tableMeta) throws SQLException { String generatedKey = tableMeta.getGeneratedKey(); boolean generated = tableMeta.getGenerator() == null && !generatedKey.isEmpty(); if (generated) { if (get(generatedKey) == null) { ResultSet rs = pst.getGeneratedKeys(); if (rs.next()) { set(generatedKey, rs.getObject(1)); // It returns Long object for int colType rs.close(); } } } }
prepInsertRow.setString(3, key); prepInsertRow.execute(); ResultSet rs = prepInsertRow.getGeneratedKeys(); rs.next(); int rowId = rs.getInt(1);
/** * 获取主键 */ protected void setGeneratedKey(PreparedStatement pst, TableMeta tableMeta, List<? extends Entity> models) throws SQLException { String generatedKey = tableMeta.getGeneratedKey(); boolean generated = tableMeta.getGenerator() == null && !generatedKey.isEmpty(); if (generated) { ResultSet rs = pst.getGeneratedKeys(); for (Entity<?> model : models) { if (model.get(generatedKey) == null) { if (rs.next()) { model.set(generatedKey, rs.getObject(1)); } } } rs.close(); } }
ps = StatementUtil.prepareStatement(conn, sql, params); ps.executeUpdate(); rs = ps.getGeneratedKeys(); if (rs != null && rs.next()) { try { return rs.getLong(1);
ps = StatementUtil.prepareStatement(conn, sql, params); ps.executeUpdate(); rs = ps.getGeneratedKeys(); if (rs != null && rs.next()) { try { return rs.getLong(1);