为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

天涯尽头无女友 2022-01-12 15:55:34
有一个例子,它适用于这个版本:    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);附加信息:@Autowiredpublic 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: 1at 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。但第二个给出错误。谢谢
查看完整描述

1 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

因此,正如Mark Rotteveel 所建议的,使用 NamedParameterJdbcTemplate 而不是 JdbcTemplate可以解决问题。


查看完整回答
反对 回复 2022-01-12
  • 1 回答
  • 0 关注
  • 178 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号