Não é possível emitir instruções de manipulação de dados com executeQuery ()

No MySQL eu tenho duas tabelas, tableA e tableB . Eu estou tentando executar duas consultas:

 executeQuery(query1) executeQuery(query2) 

Mas recebo o seguinte erro:

 can not issue data manipulation statements with executeQuery(). 

O que isto significa?

Para manipular dados, você precisa executeQuery() vez de executeQuery() .

Aqui está um extrato do javadoc executeUpdate() que já é uma resposta por si mesmo:

Executa a instrução SQL fornecida, que pode ser uma instrução INSERT, UPDATE ou DELETE ou uma instrução SQL que não retorna nada, como uma instrução SQL DDL.

Use executeUpdate() para emitir instruções de manipulação de dados. executeQuery() serve apenas para consultas SELECT (isto é, consultas que retornam um conjunto de resultados).

Ao executar a instrução DML, você deve usar executeUpdate / execute vez de executeQuery .

Aqui está uma breve comparação:

executeQueryVSexecuteUpdateVSexecute

É para isso que serve o executeUpdate .

Aqui está um breve resumo da diferença: http://www.coderanch.com/t/301594/JDBC/java/Difference-between-execute-executeQuery-executeUpdate

ExecuteQuery espera um conjunto de resultados. Eu não sou tão familiarizado com Java / MySQL, mas para criar índices você provavelmente quer um ExecuteUpdate ().

Esse código funciona para mim: eu defino valores com um INSERT e obtenho o LAST_INSERT_ID () deste valor com um SELECT; Eu 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;} 

Além de executeUpdate () nos parênteses, você também deve adicionar uma variável para usar uma instrução SQL.

Por exemplo:

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