java - sirven - No se pueden emitir instrucciones de manipulación de datos con executeQuery()
llenar un jtable con datos de una base de datos sql server (7)
En MySQL tengo dos tablas, tableA
y tableB
. Estoy intentando ejecutar dos consultas:
executeQuery(query1)
executeQuery(query2)
Pero me sale el siguiente error:
can not issue data manipulation statements with executeQuery().
¿Qué significa esto?
Además de executeUpdate () entre paréntesis, también debe agregar una variable para usar una declaración SQL.
Por ejemplo:
PreparedStatement pst = connection.prepareStatement(sql);
int numRowsChanged = pst.executeUpdate(sql);
Este código funciona para mí: establezco valores con un INSERT y obtengo el LAST_INSERT_ID () de este valor con SELECT; Uso java NetBeans 8.1, MySql y 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;}
ExecuteQuery espera un conjunto de resultados. No estoy tan familiarizado con Java / MySQL, pero para crear índices es probable que desee un ExecuteUpdate ().
Para eso es executeUpdate
.
Aquí hay un resumen muy breve de la diferencia: http://www.coderanch.com/t/301594/JDBC/java/Difference-between-execute-executeQuery-executeUpdate
Para manipular datos, realmente necesita executeUpdate()
lugar de executeQuery()
.
Aquí hay un extracto del javadoc executeUpdate()
que ya es una respuesta propia:
Ejecuta la instrucción SQL dada, que puede ser una instrucción INSERT, UPDATE o DELETE o una instrucción SQL que no devuelve nada, como una instrucción SQL DDL.
Use executeUpdate()
para emitir instrucciones de manipulación de datos. executeQuery()
solo está destinado a consultas SELECT (es decir, consultas que devuelven un conjunto de resultados).