当我在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;
答案 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对你的情况来说有点微妙。