Impossible d’émettre des instructions de manipulation de données avec executeQuery ()

En MySQL, j’ai deux tables, tableB et tableB . J’essaie 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?

Pour manipuler des données, vous avez besoin de executeUpdate() plutôt que d’ executeQuery() .

Voici un extrait du javadoc executeUpdate() qui est déjà une réponse à part entière:

Exécute l’instruction SQL donnée, qui peut être une instruction INSERT, UPDATE ou DELETE ou une instruction SQL qui ne renvoie rien, telle qu’une instruction SQL DDL.

Utilisez executeUpdate() pour émettre des instructions de manipulation de données. executeQuery() est uniquement destiné aux requêtes SELECT (c’est-à-dire les requêtes renvoyant un jeu de résultats).

Lors de l’exécution de l’instruction DML, vous devez utiliser executeUpdate / execute plutôt que executeQuery .

Voici une brève comparaison:

executeQueryVSexecuteUpdateVSexecute

C’est ce que executeUpdate est pour.

Voici un bref résumé de la différence: http://www.coderanch.com/t/301594/JDBC/java/Difference-between-execute-executeQuery-executeUpdate

ExecuteQuery attend un jeu de résultats. Je ne suis pas aussi familier avec Java / MySQL, mais pour créer des index, vous voudrez probablement un ExecuteUpdate ().

Ce code fonctionne pour moi: je mets des valeurs avec un INSERT et récupère le LAST_INSERT_ID () de cette valeur avec un SELECT; J’utilise java NetBeans 8.1, MySql et java.JDBC.driver

  try { Ssortingng Query = "INSERT INTO `stock`(`stock`, `min_stock`, `id_stock`) VALUES (" + "\"" + p.get_Stock().getStock() + "\", " + "\"" + p.get_Stock().getStockMinimo() + "\"," + "" + "null" + ")"; Statement st = miConexion.createStatement(); st.executeUpdate(Query); java.sql.ResultSet rs; rs = st.executeQuery("Select LAST_INSERT_ID() from stock limit 1"); rs.next(); //para posicionar el puntero en la primer fila ultimo_id = rs.getInt("LAST_INSERT_ID()"); } catch (SqlException ex) { ex.printTrace;} 

Outre executeUpdate () sur les parenthèses, vous devez également append une variable pour utiliser une instruction SQL.

Par exemple:

 PreparedStatement pst = connection.prepareStatement(sql); int numRowsChanged = pst.executeUpdate(sql);