计数INSERT / ON DUPLICATE KEY UPDATE

时间:2013-09-27 06:09:53

标签: java mysql jdbc insert-update connector-j

我有这个SQL查询:

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。 任何的想法?这是一个错误还是我错过了什么?

更新:最新连接器/ 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);

1 个答案:

答案 0 :(得分:1)

根据 INSERT ON DUPLICATE returns 1 instead of 0 when nothing is changed 您需要将属性“useAffectedRows”设置为“true”。