Не удается выполнить инструкции по обработке данных с помощью executeQuery()
в MySQL у меня есть две таблицы, tableA и tableB. Я пытаюсь выполнить два запроса:
executeQuery(query1)
executeQuery(query2)
но я получаю следующую ошибку:
can not issue data manipulation statements with executeQuery().
что это значит?
7 ответов:
для работы с данными, которые вам действительно нужны
executeUpdate(), а неexecuteQuery().вот выдержка из
executeUpdate()javadoc, который уже является ответом сам по себе:выполняет заданную инструкцию SQL, которая может быть инструкцией INSERT, UPDATE или DELETE или инструкцией SQL, которая ничего не возвращает, например инструкцией SQL DDL.
использовать
executeUpdate()для выдачи операторов обработки данных.executeQuery()предназначен только для запросов SELECT (т. е. запросов, возвращающих результирующий набор).
что это
executeUpdateдля.вот очень краткое изложение разницы: http://www.coderanch.com/t/301594/JDBC/java/Difference-between-execute-executeQuery-executeUpdate
ExecuteQuery ожидает результирующий набор. Я не так хорошо знаком с Java / MySQL, но для создания индексов вы, вероятно, хотите ExecuteUpdate().
этот код работает для меня: я устанавливаю значения с помощью вставки и получаю LAST_INSERT_ID() этого значения с помощью выбора; я использую java NetBeans 8.1, MySql и java.ИНТЕРФЕЙС JDBC.водитель
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;}
кроме executeUpdate () в скобках, необходимо также добавить переменную для использования инструкции SQL.
например:
PreparedStatement pst = connection.prepareStatement(sql); int numRowsChanged = pst.executeUpdate(sql);

Comments