En MySQL tengo dos tablas tableA
y tableB
. Estoy intentando ejecutar dos consultas:
executeQuery(query1)
executeQuery(query2)
Pero obtengo el siguiente error:
can not issue data manipulation statements with executeQuery().
¿Qué significa esto?
Respuestas:
Para manipular datos realmente necesita en
executeUpdate()
lugar deexecuteQuery()
.Aquí hay un extracto del
executeUpdate()
javadoc que ya es una respuesta en sí misma:fuente
Al ejecutar la instrucción DML, debe usar
executeUpdate
/ enexecute
lugar deexecuteQuery
.Aquí hay una breve comparación:
fuente
Si está usando Spring Boot, simplemente agregue una anotación @Modifying.
fuente
@Modifying(clearAutomatically = true) @Transactional
Resolví mi problema usando: justo encima de la anotación @Query que define mi consulta de eliminaciónÚselo
executeUpdate()
para emitir declaraciones de manipulación de datos.executeQuery()
solo está destinado a consultas SELECT (es decir, consultas que devuelven un conjunto de resultados).fuente
Para eliminar consulta: use
@Modifying
y@Transactional
antes de@Query
similares: -No dará el
java.sql.SQLException: Can not issue data manipulation statements with executeQuery()
error.fuente
Para eso
executeUpdate
es.Aquí hay un resumen muy breve de la diferencia: http://www.coderanch.com/t/301594/JDBC/java/Difference-between-execute-executeQuery-executeUpdate
fuente
Este código funciona para mí: establezco valores con un INSERT y obtengo el LAST_INSERT_ID () de este valor con un SELECT; Yo uso java NetBeans 8.1, MySql y java.JDBC.driver
fuente
executeQuery()
devuelve unResultSet
. No estoy tan familiarizado con Java / MySQL, pero para crear índices probablemente desee unexecuteUpdate()
.fuente
ResultSet
. En cambio, devuelve unResultSet
.No olvide agregar @Modifying y @Transnational antes de @query. esto funciona para mi.
Para eliminar el registro con alguna condición utilizando una consulta nativa con JPA, las anotaciones mencionadas anteriormente son importantes.
fuente
Además de executeUpdate () entre paréntesis, también debe agregar una variable para usar una declaración SQL.
Por ejemplo:
fuente