2013-09-27 146 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

回答