¿Cuál es la mejor forma de obtener la última identificación insertada usando sqlite de Java? Google me está dando respuestas diferentes; algunos dicen que seleccione el último-insert-rowid; otros dicen call statement.getGeneratedKeys(). ¿Cuál es la mejor ruta para tomar? (Solo quiero devolver la identificación, no usarla para otras inserciones ni nada).¿Cuál es la mejor forma de obtener la última identificación insertada usando sqlite de Java?
Respuesta
Use getGeneratedKeys() si su controlador JDBC lo admite. No querrá ensuciar tratando de obtener la llave usted mismo después del inserto. Si su controlador no es compatible con getGeneratedKeys(), obtendría el siguiente valor de la clave antes de la inserción.
Cualquiera de los enfoques ejecuta la misma instrucción SQL exacta, pero java.sql.Statement.getGeneratedKeys()
es más portátil para diferentes bases de datos subyacentes.
El uso de la función sqlite3_last_insert_rowid()
C API o la función SQL last_insert_rowid()
es la forma correcta de recuperar el rowid generado durante la última inserción.
SQLite apoya la sintaxis SQL scalar function como:
SELECT function-name();
Por lo tanto, si usted no tiene acceso a la API de C directamente, puede invocar la función escalar last_insert_rowid()
a través de un comunicado SELECT
.
Si nos fijamos en la source code para la SQLiteJDBC aplicación (es esto lo que estás usando?) Se verá que esto es exactamente lo que el autor de ese envoltorio JDBC ha hecho:
ResultSet getGeneratedKeys() throws SQLException {
if (getGeneratedKeys == null) getGeneratedKeys = conn.prepareStatement(
"select last_insert_rowid();");
return getGeneratedKeys.executeQuery();
}
- 1. Node + Mongoose: ¿Obtener la última identificación insertada?
- 2. PDO obtener la última identificación insertada
- 3. La mejor manera de obtener el ID de la última fila insertada en SQLite
- 4. cómo obtener la última identificación insertada en linq EF
- 5. PDO ¿La última identificación insertada siempre es la correcta?
- 6. SQL Server y C#: obtener la última identificación insertada
- 7. ¿Cómo obtener la última identificación insertada usando la api de JS?
- 8. ¿Hay alguna forma de obtener la última identificación insertada de una columna INCREMENTADA automáticamente en MySQL?
- 9. Obtener la última identificación eliminada en mysql
- 10. sqlalchemy flush() y obtener la identificación insertada?
- 11. Java PreparedStatement recuperando la última ID insertada
- 12. ¿Cómo sabe PDO la última identificación insertada en MySQL?
- 13. ¿Obtienes la última identificación insertada en un desencadenante?
- 14. cómo puedo conseguir la última Identificación insertada en formview
- 15. La mejor manera de encontrar la última ID insertada en mysql usando php
- 16. ¿Cómo obtener un valor de la última fila insertada?
- 17. Obtenga la identificación de la fila insertada usando C#
- 18. función postgreSQL para la última ID insertada
- 19. ¿Cuál es la mejor forma de obtener Contexto?
- 20. Obtenga la última identificación de fila insertada con Psycopg2 y una base de datos de Greenplum
- 21. ¿Cuál es la mejor forma de distribuir aplicaciones Java?
- 22. Obtener la última inserción de identificación con SQLite.NET en C#
- 23. Obtener la última identificación de inserción con la doctrina 2?
- 24. zend framework obtiene la última identificación de inserción de la inserción de múltiples filas usando execute
- 25. PLSQL JDBC: ¿Cómo obtener la última fila de identificación?
- 26. ¿Cuál es la mejor forma de obtener entrada de consola en Java?
- 27. ¿Cómo puedo acceder a la última identificación de fila insertada dentro de una secuencia de comandos SQL?
- 28. La mejor forma de obtener una ubicación geográfica en Java
- 29. Cómo obtener Id de la última entidad persistente usando JPA
- 30. ¿Cuál es la mejor manera de verificar la conexión de un cliente a elasticsearch usando Java?
¿De qué manera ¿Es "el siguiente valor de la clave antes de la inserción" algo mejor que "el valor más grande después de la inserción"? Ambos tienen el mismo tipo de condición de carrera, y ambos se basan en incrementos únicos monotónicos de la tecla. –
Se supone que la clave recuperada antes de la inserción no se basará en ninguna consulta de la tabla de destino, sino de algún proveedor clave. En términos de Oracle, sería Select sequence_name.nextval from dual. No conozco los detalles de SQL Lite pero una API llamada que devuelve una clave en su propia transacción autónoma completamente independiente de la inserción. Dicho eso ... use getGeneratedKeys(). –
row = stmt.getGeneratedKeys(). GetInt (1); –