UpdateRow() bei Java ist gefährlich!
Java generiert einen SQL-Update:

update mytable set field=newvalue where field1=f1oldvalue and field2=f2oldvalue ...

Wenn in dem Resultset nicht alle Felder aufgeführt sind, die den Satz eindeutig identifizieren kann und wird es zu multiplen Updates kommen.

Ohne eine Deklaration "for update" wird beim Lesen keine Sperre gesetzt, da dies ja nicht erforderlich ist.
Mit "for update" bzw. enstsprechendem CommitLevel wird beim Lesen bereits gesperrt.

Arbeitet man (wie auf der AS/400 leider häufiger) ohne Commit und Journal, wird bei "for Update " die 1. Sperre gesetzt und beim "Update ... where " über einen 2. ODP die 2. Sperre angefordert, was ja nicht geht.

Nur beim "update ... current of CursorName" wird die Sperre des Selects verwendet.

Auch bei Java (und das gilt für alle ODBC/JDBC/OLEDB) kann ich den internen CursorNamen nicht erfragen, da der meist vom Treiber bzw. automatisch erst auf dem Server generiert wird.

Für Remote-SQL ist daher eigentlich Journalisierung, Transaktionssteuerung sowie ein Unique Key Vorschrift.