suchen

Heim  >  Fragen und Antworten  >  Hauptteil

jdbcTemplateObject.batchUpdate() löste eine TransientDataAccessResourceException-Ausnahme aus, der Parameterindex lag außerhalb des gültigen Bereichs (4 > 3)

Mit Java 1.8Spring Framework 4.0.3-RELEASE versuche ich, eine Zeile in eine MySQL-Datenbank einzufügen, nachdem ich einen Wert von einer externen Quelle erhalten habe.

Versuchen Sie Folgendes:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

private static JdbcTemplate jdbcTemplateObject = null;

private static final String INSERT_QUERY = "insert into order_table(id,order_id,created_time,updated_time)VALUES(?,?,now(),now())";

 

parseFeedAndStoreIntoDB() {

    List<Object[]> insertData = new ArrayList<>();

    SqlRowSet sqlRowSet = null;

 

    // id, order_id, created_time, updated_time有值

    insertData.add(new Object[] {id, order_id, created_time, updated_time});

    if (insertData.size() > 0) {

        // 这里出错了

        jdbcTemplateObject.batchUpdate(INSERT_QUERY, insertData);

    }

}

Wenn ich diese Methode ausführe, erhalte ich die folgende Ausnahme:

1

2

3

4

Exception in parseFeedAndStoreIntoDB() method

org.springframework.dao.TransientDataAccessResourceException: PreparedStatementCallback; SQL

[insert into order_table(id,order_id,created_time,updated_time)VALUES(?,?,now(), now());]; Parameter index out of range (4 > 3).; nested exception is java.sql.SQLException:

Parameter index out of range (4 > 3).

Ich habe die Anzahl der Zeilen gezählt, es gibt 4 Zeilen sowohl in meinem Java-Code als auch in der MySQL-Datenbanktabelle, die ich erstellt habe.

P粉256487077P粉256487077497 Tage vor471

Antworte allen(1)Ich werde antworten

  • P粉647504283

    P粉6475042832023-09-13 09:02:50

    您的查询在idorder_id上有绑定参数,其他两个字段在查询中设置为now()。将

    1

    insertData.add(new Object[] {id, order_id, created_time, updated_time});

    改为

    1

    insertData.add(new Object[] {id, order_id});

    或者

    1

    2

    3

    private static final String INSERT_QUERY = "insert into "

            + "order_table(id,order_id,created_time,updated_time) "

            + "VALUES(?,?,now(),now())";

    改为

    1

    2

    3

    private static final String INSERT_QUERY = "insert into "

            + "order_table(id,order_id,created_time,updated_time) "

            + "VALUES(?,?,?,?)";

    Antwort
    0
  • StornierenAntwort