No entiendo la confusión. Puede especificar el parámetro de la misma manera que especifica el 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();
}
Tenga en cuenta que nunca he usado una actualización por lotes, así que primero intente hacer que la lógica funcione sin el lote, por lo que deberá ejecutar la actualización cada vez que esté en el ciclo. Sí, sé que no es eficiente, pero solo estás probando el SQL.
Luego, cuando eso funcione, intente usar la actualización por lotes.