Не удается выполнить инструкции по обработке данных с помощью executeQuery()



в MySQL у меня есть две таблицы, tableA и tableB. Я пытаюсь выполнить два запроса:



executeQuery(query1) 
executeQuery(query2)


но я получаю следующую ошибку:



can not issue data manipulation statements with executeQuery().


что это значит?

1077   7  

7 ответов:

для работы с данными, которые вам действительно нужны executeUpdate(), а не executeQuery().

вот выдержка из executeUpdate() javadoc, который уже является ответом сам по себе:

выполняет заданную инструкцию SQL, которая может быть инструкцией INSERT, UPDATE или DELETE или инструкцией SQL, которая ничего не возвращает, например инструкцией SQL DDL.

использовать executeUpdate() для выдачи операторов обработки данных. executeQuery() предназначен только для запросов SELECT (т. е. запросов, возвращающих результирующий набор).

при выполнении инструкции DML , вы должны использовать executeUpdate/execute, а не executeQuery.

вот краткое сравнение :

executeQueryVSexecuteUpdateVSexecute

что это 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

    Ничего не найдено.