我有這樣的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);
@AndeyP顯示你的jdbc代碼 – SpringLearner
@AndreyP你是什麼意思的「它回報我......」?你的意思是你在Java代碼中使用'stmt.execute ...()'方法的返回值嗎? –
是的,ans1 = 1,ans2 = 1 第一個沒問題,導致它被插入。 第二個錯誤,我不插入/更新第一個插入的行。 – AndreyP