Não entendo a confusão. Você pode especificar o parâmetro da mesma forma que especifica o parâmetro para "ItemCount":
String SQLupdate = "UPDATE tableItem SET ItemCount= ? WHERE ItemCode = ?";
ps = con.prepareStatement(SQLupdate);
for(int row=0; row<rows; row++)
{
String itemCode = (String)tabelDetailDO.getValueAt(row, 0);
itemCount = (int) tabelDetailDO.getValueAt(row, 2);
addItemCount = (int) tabelDetailDO.getValueAt(row, 3);
totalItemCount = itemCount + addItemCount;
ps.setInt(1, totalItemCount);
ps.setString(2, itemCode);
ps.addBatch();
}
Observe que eu nunca usei uma atualização em lote, então primeiro tente fazer a lógica funcionar sem o lote, então você precisará executar a atualização toda vez no loop. Sim, eu sei que não é eficiente, mas você está apenas testando o SQL.
Então, quando isso funcionar, você tenta usar a atualização em lote.