2012-04-02 52 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對於你的情況有點微妙。