Не могу вставить в таблицу используя JDBC - PullRequest
3 голосов
/ 02 апреля 2012

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

INSERT INTO user(`dev_id`,`email`) VALUES('123','456@gmail.com');

Но в 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 столбца по умолчаниюзначение = ноль;

Ответы [ 4 ]

5 голосов
/ 02 апреля 2012

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

3 голосов
/ 02 апреля 2012

Вместо executeQuery() попробуйте использовать execute() или executeUpdate()

1 голос
/ 02 апреля 2012

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

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

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

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

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

1 голос
/ 02 апреля 2012

Вызовите executeUpdate(), если вы выполняете операторы INSERT/UPDATE/DELETE, а не executeQuery(), которые предназначены для выполнения операторов SELECT

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...