2012-04-02 3 views
3

Следующий запрос был успешным, когда я использовал в MySQLне удается вставить в таблицу с помощью JDBC

INSERT INTO user(`dev_id`,`email`) VALUES('123','[email protected]'); 

Но в Java JDBC Я получил это исключение:

Can not issue data manipulation statements with executeQuery(). 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910) 
    at com.mysql.jdbc.Statement.checkForDml(Statement.java:417) 
    at com.mysql.jdbc.Statement.executeQuery(Statement.java:1140) 

Моя таблица имеет 5 колонок и 3 столбца имеют значение по умолчанию = null;

+0

Ну, сообщение об ошибке довольно ясно, не так ли? –

ответ

5

executeQuery предназначен только для выдачи запросов. Вы должны использовать executeUpdate для вставки, которая предназначена для операторов (например, INSERT), которые изменяют данные. В идеале, вы должны использовать PreparedStatement

+0

Это сработало.Так много! – user1235872

+0

+1, Точное объяснение –

1

вызова executeUpdate() если и выпускает INSERT/UPDATE/DELETE заявления и не executeQuery() что является для выполнения ЗЕЬЕСТА

3

Вместо executeQuery() пытается использовать execute() или executeUpdate()

1

Вы должны использовать executeUpdate() вместо executeQuery(). JavaDoc:

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

Примечание: Этот метод нельзя вызвать на PreparedStatement или CallableStatement.

Параметры: sql - оператор языка SQL Data Manipulation Language (DML), такой как INSERT, UPDATE или DELETE; или оператор SQL, который ничего не возвращает, , такой как оператор DDL.

Также, когда возникает проблема - проверьте javadoc и попробуйте выполнить поиск в Интернете. Stackoverflow немного деликатен для вашего дела.