update statement preparedstatement prepared parametros insertar example desde datos consultas con java mysql jdbc prepared-statement

parametros - preparedstatement java select



Java PreparedStatement recuperando el Ășltimo ID insertado (3)

Si no puede usar RETURN_GENERATED_KEYS , use otra declaración (una consulta esta vez) para hacer

SELECT last_insert_id()

Asegúrese de que definitivamente tiene una columna de clave primaria de incremento automático en esa tabla.

Esta pregunta ya tiene una respuesta aquí:

Esta respuesta a esta pregunta hecha de esta manera parece ser muy difícil de encontrar en Internet. Básicamente estoy insertando valores en una base de datos MySQL usando PreparedStatement. Uso PreparedStatement para escapar de los datos y evitar los ataques de inyección SQL. El problema es que ahora hay retreving esas llaves.

String query="Insert INTO Table_A(name, age) (?, ?)"; //String query="Insert INTO Table_A(name, age) (''abc'',''123'' )";//Doesn''t escape PreparedStatement prest; prest = con.prepareStatement(query); prest.setString(1,"abc"); prest.setInt(2,123); prest.executeUpdate(); //prest.executeUpdate(query, PreparedStatement.RETURN_GENERATED_KEYS); Throws an error //prest.executeQuery(); Throws an error

Entonces, ¿cómo puedo escapar de la entrada y usar PreparedStatements en Java?



aprueba Statement.RETURN_GENERATED_KEYS en prepareStatement() junto con tu consulta. Y luego use getGeneratedKeys () de PreparedStatement para obtener el ResultSet que contiene su auto_incremented_id insertado.

String query="Insert INTO Table_A(name, age) (?, ?)"; //String query="Insert INTO Table_A(name, age) (''abc'',''123'' )";//Doesn''t escape PreparedStatement prest; prest = con.prepareStatement(query, Statement.RETURN_GENERATED_KEYS); prest.setString(1,"abc"); prest.setInt(2,123); prest.executeUpdate(); //prest.executeUpdate(query, PreparedStatement.RETURN_GENERATED_KEYS); Throws an error //prest.executeQuery(); Throws an error ResultSet rs = prest.getGeneratedKeys(); if(rs.next()) { int last_inserted_id = rs.getInt(1); }