tabla - mostrar datos en una jtable java netbeans
Obtener índice de filas insertadas de una base de datos MySQL (3)
Estoy usando Java (jdbc) para interactuar con una base de datos MySQL. Tengo una tabla con un índice primario que es AUTO INCREMENTO. Cuando inserto una fila, necesito obtener el índice que acaba de recibir. ¿Cómo puedo hacer eso?
Alternativamente, usando Spring JDBC se vería así:
Map<String, Object> map = new HashMap<String, Object>();
map.put("column1", "test");
map.put("column2", Boolean.TRUE);
SimpleJdbcInsert insert = new SimpleJdbcInsert(template).withTableName("table").usingGeneratedKeyColumns("id");
int id = insert.executeAndReturnKey(map).intValue();
stmt.executeUpdate(
"INSERT INTO autoIncTutorial (dataField) "
+ "values (''Can I Get the Auto Increment Field?'')",
Statement.RETURN_GENERATED_KEYS);
//
// Example of using Statement.getGeneratedKeys()
// to retrieve the value of an auto-increment
// value
//
int autoIncKeyFromApi = -1;
rs = stmt.getGeneratedKeys();
if (rs.next()) {
autoIncKeyFromApi = rs.getInt(1);
} else {
// throw an exception from here
}
rs.close();
rs = null;
Gracias a John Boker por su excelente respuesta.
Si desea utilizar una RETURN_GENERATED_KEYS
preparada , aún puede usar RETURN_GENERATED_KEYS
, pero debe aplicar los comandos de manera diferente:
PreparedStatement ps = mysql.prepareStatement(
"INSERT INTO myTable (colA, colB, colC) VALUES (?, ?, ?)",
Statement.RETURN_GENERATED_KEYS );
ps.setString(1, "My text");
ps.setTimestamp(2, new java.sql.Timestamp(new java.util.Date().getTime()););
ps.setInt(3, 5150);
ps.executeUpdate();
ResultSet results = ps.getGeneratedKeys();
results.next(); // Assume just one auto-generated key; otherwise, use a while loop here
System.out.println(results.getInt(1)); // there should only be 1 column in your results: the value of the auto-generated key
- Agregue el
RETURN_GENERATED_KEYS
en la funciónprepareStatement()
. - Obtenga resultados no de
statement.executeUpdate()
sino destatement.getGeneratedKeys()
.