JDBC ON DUPLICATE KEY UPDATE не возвращает 0 - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть небольшой Java-код, который использует SQL-запрос для INSERT или UPDATE, если он уже существует.

SQL-оператор:

PreparedStatement cl = c.prepareStatement("INSERT INTO client VALUES (?, ?, ?, ?, ?, ?) " +
"ON DUPLICATE KEY UPDATE sex = VALUES(sex), zip = " +
"VALUES(zip), gem = VALUES(gem), agb = VALUES(agb), dob = VALUES(dob)");

Java-код:

private void clientInsert(PreparedStatement cl, String bsn, String sex, String zip, String dob, String gem, String agb) throws SQLException {
    cl.setString(1, bsn);
    cl.setString(2, sex);
    cl.setString(3, zip);
    cl.setString(4, dob);
    cl.setString(5, gem);
    cl.setString(6, agb);

    int result = cl.executeUpdate();
    System.out.println("return: " + result);

    if (result == 1) System.out.println("New client inserted: " + bsn);
    else if (result == 2) System.out.println("Existing client updated: " + bsn);
    else if (result == 0) System.out.println("Existing client, not updated (duplicate values)");
    else System.out.println("query failed");
}

Он вставляет нормально (с возвратом 1) и при повторном запуске с тем же "bsn" (id), но с другим zip-файлом, например, обновляется нормально (с возвратом 2).Но когда я запускаю его снова, используя те же самые данные, без изменений, он снова возвращает 1, поэтому я не могу сказать в своей консоли, клиент уже существует без изменений или нет.

Как это проверить?

...