Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 重复密钥更新时的插入/插入计数_Java_Mysql_Jdbc_Insert Update_Connector J - Fatal编程技术网

Java 重复密钥更新时的插入/插入计数

Java 重复密钥更新时的插入/插入计数,java,mysql,jdbc,insert-update,connector-j,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

我有一个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);

您需要将属性“useAffectedRows”设置为“true”。

@AndeyP显示您的jdbccode@AndreyP你说的“它还我…”是什么意思?您的意思是您在Java代码中使用的
stmt.execute…()
方法的返回值吗?是的,ans1=1,ans2=1第一个是可以的,因为它是插入的。第二个错误,我没有插入/更新第一个插入的行。是的,我现在明白了。如果为true,则连接报告更改的行,而不是找到的行。