2013-09-27 187 views
0

我有這樣的SQL查詢:計數INSERT /對重複密鑰更新

INSERT INTO `Items` 
(`id`,`parent_id`,`name`) 
VALUES (123,321,null) 
ON DUPLICATE KEY UPDATE 
`id` = `id`, `parent_id` = VALUES(`parent_id`), `name` = VALUES(`name`); 

我運行phpMyAdmin的查詢,並返回我正確的結果:

0 - No update 
1 - Line inserted 
2 - Line updated 

但是當我運行查詢通過java/jdbc,查詢返回1-1-2 也就是說,當沒有插入/更新時,返回1。 有什麼想法?這是一個錯誤還是我錯過了一些東西?

UPDATE:最新的連接器/ J - v5.1.26

UPDATE2:Java代碼

int ans1 = 0; 
    int ans2 = 0; 
    try { 
     java.sql.Connection c = DbConnector.getConn(); 

     Statement s = c.createStatement(); 
     ans1 = DbConnector.execute("INSERT INTO `Items` (`id`,`parent_id`,`name`) VALUES (123,9990635,null) ON DUPLICATE KEY UPDATE `id` = `id`, `parent_id` = VALUES(`parent_id`), `name` = VALUES(`name`);"); 
     ans2 = DbConnector.execute("INSERT INTO `Items` (`id`,`parent_id`,`name`) VALUES (123,9990635,null) ON DUPLICATE KEY UPDATE `id` = `id`, `parent_id` = VALUES(`parent_id`), `name` = VALUES(`name`);"); 
     s.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    System.out.println(ans1); 
    System.out.println(ans2); 
+0

@AndeyP顯示你的jdbc代碼 – SpringLearner

+0

@AndreyP你是什麼意思的「它回報我......」?你的意思是你在Java代碼中使用'stmt.execute ...()'方法的返回值嗎? –

+0

是的,ans1 = 1,ans2 = 1 第一個沒問題,導致它被插入。 第二個錯誤,我不插入/更新第一個插入的行。 – AndreyP

回答