Nochmals: ID ermitteln nach Insert

Stefan Dreis

Mitglied
Ich hatte in dem Thread

http://www.java-forum.org/datenbank...id-wert-insert-ueber-jdbctemplate-update.html

schon mal gefragt. Suche aber gerad verzweifelt eine Funktion wie man aus einer parametrisierten Abfrage

Code:
getSimpleJdbcTemplate().update("insert into table "                             + "(column1, column2, column3, column4, column5) VALUES "                             + "(:column1, :column2, :column3, :column4, :column5)",                     new MapSqlParameterSource(map));

den Werte der id nach insert ermitteln kann.

Oder kurz gesagt ich möchte 2 Sachen erreichen. SQL Injection verhindern und ID nach Insert ermitteln. In der Spring Java Doc Reference hab ich hierzu nichts gefunden.
 
Java:
final String INSERT_SQL = "insert into my_test (name) values(?)";
final String name = "Rob";
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(
    new PreparedStatementCreator() {
        public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
            PreparedStatement ps =
                connection.prepareStatement(INSERT_SQL, new String[] {"id"});
            ps.setString(1, name);
            return ps;
        }
    },
    keyHolder);
// keyHolder.getKey() now contains the generated key
 
Das Stichwort dazu heisst generatedKeys Versuch mal

Java:
ResultSet generatedKeys = statement.getGeneratedKeys();
        if (generatedKeys.next()) {
            System.out.println(generatedKeys.getLong(1));
         }[/JAVA

Der Hinweis von Deros mit KeyHolder ist auch sehr gut, wenn es denn wirklich Spring sein muss.
 
Zuletzt bearbeitet:

Zurück
Oben