jdbcTemplateObject.batchUpdate() 引發了一個 TransientDataAccessResourceException 例外,參數索引超出了範圍(4 > 3)
P粉256487077
P粉256487077 2023-09-12 19:32:31
0
1
449

使用Java 1.8Spring Framework 4.0.3-RELEASE,我試著從外部來源取得值後將一行插入到MySQL資料庫。

嘗試這樣做:

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);
    }
}

當我執行這個方法時,我得到以下例外:

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).

我已經計算了行數,我的Java程式碼和我建立的MySQL資料庫表中都有4行。

P粉256487077
P粉256487077

全部回覆(1)
P粉647504283

您的查詢在idorder_id上有綁定參數,其他兩個欄位在查詢中設定為now()。將

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

改為

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

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

改為

private static final String INSERT_QUERY = "insert into "
        + "order_table(id,order_id,created_time,updated_time) "
        + "VALUES(?,?,?,?)";
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板