Подготовленные операторы - Выполнить пакет, весь пакет завершается неудачно, даже если в одной строке есть ошибка - PullRequest
0 голосов
/ 16 октября 2019

У меня проблема в том, что когда у меня есть дублирующаяся строка в пакете, мой пакет выполнения завершается неудачно для этой строки, но проблема в том, что остальные операторы вставки не выполняются. Я использую основную версию драйвера Oracle SQL JDBC 4.

Как я могу заверить вас, что по крайней мере безошибочные строки выполняются и только строка данных с ошибками не вставляется?

  conn.setAutoCommit(true);
    try {
    PreparedStatement testStatement = conn.prepareStatement("insert into EW_JOBS.jhi_job_history values (?,?,?,?,?,?,?,?,?,?)" );





    testStatement.setInt(1, 4477443);
    testStatement.setInt(2, 4477443);
    testStatement.setDate(3, null);
    testStatement.setString(4, null);
    testStatement.setString(5, null);
    testStatement.setString(6, null);
    testStatement.setString(7, null);
    testStatement.setString(8, null);
    testStatement.setString(9, null);
    testStatement.setString(10, null);
    testStatement.addBatch();
    testStatement.setInt(1, 4477444);
    testStatement.setInt(2, 4477444);
    testStatement.setDate(3, null);
    testStatement.setString(4, null);
    testStatement.setString(5, null);
    testStatement.setString(6, null);
    testStatement.setString(7, null);
    testStatement.setString(8, null);
    testStatement.setString(9, null);
    testStatement.setString(10, null);

    testStatement.addBatch();

    testStatement.setInt(1, 4477443);
    testStatement.setInt(2, 4477443);
    testStatement.setDate(3, null);
    testStatement.setString(4, null);
    testStatement.setString(5, null);
    testStatement.setString(6, null);
    testStatement.setString(7, null);
    testStatement.setString(8, null);
    testStatement.setString(9, null);
    testStatement.setString(10, null);

    testStatement.addBatch();

    testStatement.setInt(1, 4477445);
    testStatement.setInt(2, 4477445);
    testStatement.setDate(3, null);
    testStatement.setString(4, null);
    testStatement.setString(5, null);
    testStatement.setString(6, null);
    testStatement.setString(7, null);
    testStatement.setString(8, null);
    testStatement.setString(9, null);
    testStatement.setString(10, null);
    testStatement.addBatch();

    testStatement.setInt(1, 4477446);
    testStatement.setInt(2, 4477446);
    testStatement.setDate(3, null);
    testStatement.setString(4, null);
    testStatement.setString(5, null);
    testStatement.setString(6, null);
    testStatement.setString(7, null);
    testStatement.setString(8, null);
    testStatement.setString(9, null);
    testStatement.setString(10, null);

    testStatement.addBatch();



    testStatement.executeBatch();
    conn.commit();
    conn.close();
    }
    catch (BatchUpdateException e) {


       System.out.println("update counts value is : " +e.getUpdateCounts());

    }
...