2012-04-02 53 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

那么,错误信息很清楚,不是吗? – 2012-04-02 07:57:09

回答

5

executeQuery仅用于发出查询语句。您需要使用executeUpdate进行插入,该插入用于修改数据的语句(如INSERT)。理想情况下,你也应该使用PreparedStatement

+0

它的工作。很多! – user1235872 2012-04-02 08:26:34

+0

+1,精确说明 – 2012-04-03 05:09:08

1

呼叫executeUpdate()如果u正在发行INSERT/UPDATE/DELETE声明,而不是executeQuery()这是执行SELECT语句

3

而不是executeQuery()尝试使用​​或executeUpdate()

1

您应该使用executeUpdate()而不是executeQuery()。 的JavaDoc:

执行给定的SQL语句,这可能是一个INSERT,UPDATE或DELETE 声明或者不返回任何内容,如 SQL DDL语句的SQL语句。

注意:此方法无法在PreparedStatement或CallableStatement上调用。

参数: sql - SQL数据操纵语言(DML)语句,例如INSERT,UPDATE或DELETE;或者一个不返回任何内容的SQL语句,如DDL语句, 。

而且每当出现问题 - 检查javadoc和先试google搜索。 Stackoverflow对于你的情况有点微妙。