# Nochmals: ID ermitteln nach Insert



## Stefan Dreis (1. Jun 2012)

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


```
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.


----------



## Deros (1. Jun 2012)

```
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
```


----------



## turtle (1. Jun 2012)

Das Stichwort dazu heisst generatedKeys  Versuch mal


```
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.
```


----------

