In MySQL habe ich zwei Tabellen tableA
und tableB
. Ich versuche zwei Abfragen auszuführen:
executeQuery(query1)
executeQuery(query2)
Aber ich bekomme folgenden Fehler:
can not issue data manipulation statements with executeQuery().
Was bedeutet das?
Antworten:
Um Daten zu manipulieren, benötigen Sie tatsächlich
executeUpdate()
eher alsexecuteQuery()
.Hier ist ein Auszug aus dem
executeUpdate()
Javadoc, der bereits eine Antwort für sich ist:quelle
Wenn Sie eine DML-Anweisung ausführen, sollten Sie
executeUpdate
/execute
anstatt verwendenexecuteQuery
.Hier ist ein kurzer Vergleich:
quelle
Wenn Sie Spring Boot verwenden, fügen Sie einfach eine @ Modifying-Anmerkung hinzu.
quelle
@Modifying(clearAutomatically = true) @Transactional
direkt über der @ Query-Annotation, die meine Löschabfrage definiertVerwenden Sie
executeUpdate()
diese Option, um Datenmanipulationsanweisungen auszugeben.executeQuery()
ist nur für SELECT-Abfragen gedacht (dh Abfragen, die eine Ergebnismenge zurückgeben).quelle
Zum Löschen der Abfrage - Verwenden Sie
@Modifying
und@Transactional
vor dem@Query
Gleichen: -Es wird den
java.sql.SQLException: Can not issue data manipulation statements with executeQuery()
Fehler nicht geben .quelle
Dafür
executeUpdate
ist da.Hier ist eine sehr kurze Zusammenfassung des Unterschieds: http://www.coderanch.com/t/301594/JDBC/java/Difference-between-execute-executeQuery-executeUpdate
quelle
Dieser Code funktioniert für mich: Ich setze Werte mit einem INSERT und erhalte die LAST_INSERT_ID () dieses Werts mit einem SELECT; Ich verwende Java NetBeans 8.1, MySql und Java.JDBC.driver
quelle
executeQuery()
gibt a zurückResultSet
. Ich bin nicht so vertraut mit Java / MySQL, aber um Indizes zu erstellen, möchten Sie wahrscheinlich eineexecuteUpdate()
.quelle
ResultSet
. Es stattdessen kehrt einResultSet
.Vergessen Sie nicht, vor @query @Modifying und @Transnational hinzuzufügen. Für mich geht das.
Um den Datensatz unter bestimmten Bedingungen mithilfe einer nativen Abfrage mit JPA zu löschen, sind die oben genannten Anmerkungen wichtig.
quelle
Neben executeUpdate () in Klammern müssen Sie auch eine Variable hinzufügen, um eine SQL-Anweisung zu verwenden.
Beispielsweise:
quelle