Imansible emettere istruzioni di manipolazione dei dati con executeQuery ()

In MySQL ho due tabelle, tableA e tableB . Sto cercando di eseguire due query:

 executeQuery(query1) executeQuery(query2) 

Ma ottengo il seguente errore:

 can not issue data manipulation statements with executeQuery(). 

Cosa significa questo?

Per manipolare i dati è necessario executeUpdate() piuttosto che executeQuery() .

Ecco un estratto da executeUpdate() javadoc che è già una risposta a sé stante:

Esegue l’istruzione SQL fornita, che può essere un’istruzione INSERT, UPDATE o DELETE o un’istruzione SQL che non restituisce nulla, ad esempio un’istruzione SQL DDL.

Utilizzare executeUpdate() per emettere dichiarazioni di manipolazione dei dati. executeQuery() è pensato solo per le query SELECT (es. query che restituiscono un set di risultati).

Quando si esegue l’istruzione DML, è necessario utilizzare executeUpdate / execute anziché executeQuery .

Ecco un breve confronto:

executeQueryVSexecuteUpdateVSexecute

Ecco a cosa executeUpdate .

Ecco un breve riassunto della differenza: http://www.coderanch.com/t/301594/JDBC/java/Difference-between-execute-executeQuery-executeUpdate

ExecuteQuery prevede un set di risultati. Non ho familiarità con Java / MySQL, ma per creare indici probabilmente vuoi un ExecuteUpdate ().

Questo codice funziona per me: imposto valori con INSERT e ottieni LAST_INSERT_ID () di questo valore con SELECT; Io uso java NetBeans 8.1, MySql e java.JDBC.driver

  try { String 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;} 

Oltre a executeUpdate () tra parentesi, devi anche aggiungere una variabile per utilizzare un’istruzione SQL.

Per esempio:

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