Hallo,
ich habe einen "relativ" großen update meiner Oracle-DB vor ( 40-50 Zeilen ), daher habe ich mich dazu entschieden batches zu nutzen. Nur iwie wird bei jeder Durchführung nur eine Zeile, bzw status geupdated.
Hier mein Code:
Ich hole mir da die Stati als String aus einer Liste und parse sie dann, das ist wohl längst alles nicht ideal aber es müsste funktionieren. Die Stelle an der es hakt ist glaube ich viel mehr bei den batches. Kann mir jemand etwas dazu sagen? Ich benutze ojdbc14...
ich habe einen "relativ" großen update meiner Oracle-DB vor ( 40-50 Zeilen ), daher habe ich mich dazu entschieden batches zu nutzen. Nur iwie wird bei jeder Durchführung nur eine Zeile, bzw status geupdated.
Hier mein Code:
Code:
public static void set_ps_dark_red(String db, String pgid, String pinid){ ArrayList<ArrayList<String>> liste = new ArrayList<ArrayList<String>>(); liste = get_psid_from_pinid(db, pgid, pinid); PreparedStatement pstmt = null; Connection con = datenbankZugriff.dbverbindung.getConnection(db); try { con.setAutoCommit(false); for(ArrayList<String> arlst: liste){ if(arlst.get(2).equals("2") || arlst.get(2).equals("7") || arlst.get(2).equals("5") || arlst.get(2).equals("1")){ System.out.println(arlst.get(0)); int tmp = Integer.parseInt(arlst.get(0)); pstmt = con.prepareStatement("UPDATE processstep SET status = 9 where psid = ?"); pstmt.setInt(1, tmp); pstmt.addBatch(); pstmt.clearParameters(); } } pstmt.executeBatch(); System.out.println("executed"); pstmt.clearBatch(); pstmt.close(); con.setAutoCommit(true); con.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
Comment