无法使用JDBC插入表中

时间:2012-04-02 07:54:30

标签: java mysql jdbc

当我在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列有默认值= null;

4 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:3)

而不是executeQuery()尝试使用execute()executeUpdate()

答案 2 :(得分:1)

如果您发出executeUpdate()语句而不是INSERT/UPDATE/DELETE用于执行SELECT语句,则调用executeQuery()

答案 3 :(得分:1)

您应该使用executeUpdate()代替executeQuery()。 的JavaDoc:

  

执行给定的SQL语句,该语句可能是 INSERT,UPDATE或   DELETE 语句或不返回任何内容的SQL语句,例如   SQL DDL语句。

     

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

     

参数:       sql - 一种SQL数据操作语言(DML)语句,例如INSERT,UPDATE或DELETE;或者什么都不返回的SQL语句,   例如DDL声明。

每当出现问题时 - 检查javadoc并首先尝试使用Google搜索。 Stackoverflow对你的情况来说有点微妙。