Dans MySQL, j'ai deux tables, tableA
et tableB
. J'essaye d'exécuter deux requêtes:
executeQuery(query1)
executeQuery(query2)
Mais j'obtiens l'erreur suivante:
can not issue data manipulation statements with executeQuery().
Qu'est-ce que ça veut dire?
Réponses:
Pour manipuler les données dont vous avez réellement besoin
executeUpdate()
plutôt queexecuteQuery()
.Voici un extrait du
executeUpdate()
javadoc qui est déjà une réponse en soi:la source
Lors de l'exécution d'une instruction DML, vous devez utiliser
executeUpdate
/execute
plutôt queexecuteQuery
.Voici une brève comparaison:
la source
Si vous utilisez Spring Boot, ajoutez simplement une annotation @Modifying.
la source
@Modifying(clearAutomatically = true) @Transactional
juste au-dessus de l'annotation @Query définissant ma requête de suppressionUtilisez
executeUpdate()
pour émettre des instructions de manipulation de données.executeQuery()
est uniquement destiné aux requêtes SELECT (c'est-à-dire aux requêtes qui renvoient un jeu de résultats).la source
Pour la requête Supprimer - Utilisez
@Modifying
et@Transactional
avant les éléments@Query
similaires: -Cela ne donnera pas l'
java.sql.SQLException: Can not issue data manipulation statements with executeQuery()
erreur.la source
C'est à ça que ça
executeUpdate
sert.Voici un très bref résumé de la différence: http://www.coderanch.com/t/301594/JDBC/java/Difference-between-execute-executeQuery-executeUpdate
la source
Ce code fonctionne pour moi: je fixe des valeurs avec un INSERT et j'obtiens le LAST_INSERT_ID () de cette valeur avec un SELECT; J'utilise java NetBeans 8.1, MySql et java.JDBC.driver
la source
executeQuery()
renvoie unResultSet
. Je ne suis pas aussi familier avec Java / MySQL, mais pour créer des index, vous voulez probablement un fichierexecuteUpdate()
.la source
ResultSet
. Il renvoie à la place unResultSet
.N'oubliez pas d'ajouter @Modifying et @Transnational avant @query. ça marche pour moi.
Pour supprimer l'enregistrement avec certaines conditions en utilisant une requête native avec JPA, les annotations mentionnées ci-dessus sont importantes.
la source
Outre executeUpdate () sur les parenthèses, vous devez également ajouter une variable pour utiliser une instruction SQL.
Par exemple:
la source