Back Forum Reply New

Separate string and start batchUpdate

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);
}
¥
Back Forum Reply New