mons.dbcp.DelegatingPreparedStatement.setString(DelegatingPreparedStatement.java:132)
org..jdbc.core.StatementCreatorUtils.setValue(StatementCreatorUtils.java:335)
org..jdbc.core.StatementCreatorUtils.setParameterValueInternal(StatementCreatorUtils.java:217)
org..jdbc.core.StatementCreatorUtils.setParameterValue(StatementCreatorUtils.java:145)
org..jdbc.core.simple.SimpleJdbcTemplate.doSetStatementParameters(SimpleJdbcTemplate.java:319)
org..jdbc.core.simple.SimpleJdbcTemplate.access$000(SimpleJdbcTemplate.java:61)
org..jdbc.core.simple.SimpleJdbcTemplate$1.setValues(SimpleJdbcTemplate.java:272)
org..jdbc.core.JdbcTemplate$4.doInPreparedStatement(JdbcTemplate.java:875)
org..jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:591)
org..jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:619)
org..jdbc.core.JdbcTemplate.batchUpdate(JdbcTemplate.java:866)
org..jdbc.core.simple.SimpleJdbcTemplate.doExecuteBatchUpdate(SimpleJdbcTemplate.java:266)Hello
1)
Code:
Object[] arrCheckedProfileIDs = checkedProfileIDs.split(quot;;quot;);
Listlt;Object[]gt; listIDs = new ArrayListlt;Object[]gt;();
listIDs.add(arrCheckedProfileIDs);
After this, only for testing purposes, use a for to show all the values splited, Perhaps a not desired element is included
2)
Code:
private static final String PROFILE_DELETE_BY_ID = quot;DELETE FROM profile WHERE id = (:id)quot;;
public int[] batchRemoveByIDs(Listlt;Object[]gt; ids) {
int[] updateCounts = getSimpleJdbcTemplate().batchUpdate(
PROFILE_DELETE_BY_ID, ids); // exception throw here
return updateCounts;
Try with DELETE FROM profile WHERE id = :idquot;;, yes without ( )
HTH
mons.dbcp.DelegatingPreparedStatement.setString(DelegatingPreparedStatement.java:132)
org..jdbc.core.StatementCreatorUtils.setValue(StatementCreatorUtils.java:335)
org..jdbc.core.StatementCreatorUtils.setParameterValueInternal(StatementCreatorUtils.java:217)
org..jdbc.core.StatementCreatorUtils.setParameterValue(StatementCreatorUtils.java:145)
org..jdbc.core.simple.SimpleJdbcTemplate.doSetStatementParameters(SimpleJdbcTemplate.java:319)
org..jdbc.core.simple.SimpleJdbcTemplate.access$000(SimpleJdbcTemplate.java:61)
org..jdbc.core.simple.SimpleJdbcTemplate$1.setValues(SimpleJdbcTemplate.java:272)
org..jdbc.core.JdbcTemplate$4.doInPreparedStatement(JdbcTemplate.java:875)
org..jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:591)
org..jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:619)
org..jdbc.core.JdbcTemplate.batchUpdate(JdbcTemplate.java:866)
org..jdbc.core.simple.SimpleJdbcTemplate.doExecuteBatchUpdate(SimpleJdbcTemplate.java:266)Hello
See how I fill my Listlt;Object[]gt;Code: Listlt;Object[]gt; parameters = new ArrayListlt;Object[]gt;(); for (Vehicle vehicle : vehicles) {parameters.add(new Object[] { .... }); } getSimpleJdbcTemplate().batchUpdate(sql, parameters);
NotCode:
Listlt;Object[]gt; parameters = new ArrayListlt;Object[]gt;();
parameters.add(vehicles)
Try to adapt your controler to such logic, because see your error
root cause
java.lang.ArrayIndexOutOfBoundsException: 1
org.sqlite.PrepStmt.batch(PrepStmt.java:131)
Since your first element is wrong
Originally Posted by dr_pompeiiHello
See how I fill my Listlt;Object[]gt;Code: Listlt;Object[]gt; parameters = new ArrayListlt;Object[]gt;(); for (Vehicle vehicle : vehicles) {parameters.add(new Object[] { .... }); } getSimpleJdbcTemplate().batchUpdate(sql, parameters);
NotCode:
Listlt;Object[]gt; parameters = new ArrayListlt;Object[]gt;();
parameters.add(vehicles)
Try to adapt your controler to such logic, because see your errorSince your first element is wrong
O#1050;, now it's work . Thanks
my contoller:
Code:
public ModelAndView remove(fromServletRequest request,
fromServletResponse response) throws Exception {
String checkedProfileIDs = ServletRequestUtils
.getRequiredStringParameter(request, quot;IDsquot;);
profileManager.batchRemoveByIDs(checkedProfileIDs.split(quot;;quot;));
return new ModelAndView(quot;redirect:list.htmquot;);
}
my dao:
Code:
private static final String PROFILE_DELETE_BY_ID = quot;DELETE FROM profile WHERE id = (:id)quot;;
@Override
public void batchRemoveByIDs(Object[] ids) {
Listlt;Object[]gt; listIDs = new ArrayListlt;Object[]gt;();
for (int i = 0; i lt; ids.length; i++) {
Object checkedID = ids[i];
listIDs.add(new Object[] { checkedID });
}
int[] updateCounts = getSimpleJdbcTemplate().batchUpdate(
PROFILE_DELETE_BY_ID, listIDs);
} |