将插入与 KeyHolder 一起使用时出现 ArrayIndexOutOfBounds

有一个例子,它适用于这个版本:


    String sql = "insert into album (name) VALUES (:name)";

    Object[] params = new Object[] { al.getName() };

    jdbcTemplate.update(sql, params);

并在此版本中给出 ArrayIndexOutOfBoundsException:


    KeyHolder holder = new GeneratedKeyHolder();

    String sql = "insert into album (name) VALUES (:name)";

    Object[] params = new Object[] { al.getName() };

    jdbcTemplate.update(sql, params, holder);

附加信息:


@Autowired

public void setDataSource(DataSource dataSource) {

    this.jdbcTemplate = new JdbcTemplate(dataSource);

}


<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

    <property name="driverClassName" value="org.sqlite.JDBC"></property>

    <property name="url" value="jdbc:sqlite:db/springDB.db"></property>

    <property name="username" value=""></property>

    <property name="password" value=""></property>

</bean>

有一个堆栈跟踪:


Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1

at org.sqlite.core.CorePreparedStatement.batch(CorePreparedStatement.java:128)

at org.sqlite.jdbc3.JDBC3PreparedStatement.setObject(JDBC3PreparedStatement.java:388)

at org.springframework.jdbc.core.StatementCreatorUtils.setValue(StatementCreatorUtils.java:402)

at org.springframework.jdbc.core.StatementCreatorUtils.setParameterValueInternal(StatementCreatorUtils.java:235)

at org.springframework.jdbc.core.StatementCreatorUtils.setParameterValue(StatementCreatorUtils.java:166)

at org.springframework.jdbc.core.ArgumentPreparedStatementSetter.doSetValue(ArgumentPreparedStatementSetter.java:66)

at org.springframework.jdbc.core.ArgumentPreparedStatementSetter.setValues(ArgumentPreparedStatementSetter.java:47)

at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:914)


这里有什么问题?好像没有错误。第一个版本插入数据并创建一个 id。但第二个给出错误。谢谢


天涯尽头无女友
浏览 179回答 1
1回答

慕标5832272

因此,正如Mark Rotteveel 所建议的,使用 NamedParameterJdbcTemplate 而不是 JdbcTemplate可以解决问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java