Anmelden

View Full Version : Java BatchUpdate ohne Journal



WPF
28-07-04, 12:36
Hallo,

ich habe ein java-Programm geschrieben hier die Code-Fragemente

String urlas = "jdbc:as400://"+ as400host +";naming=sql;errors=full";

String sqlupdbde="INSERT INTO YABCLIB.DATEI (Feld1,Feld2) Values (?,?)";

Object a =Class.forName("com.ibm.as400.access.AS400JDBCDriver").newInstance();
DriverManager.registerDriver((Driver)a);
connas = DriverManager.getConnection(urlas,as400user,as400p wd);

connas.setAutoCommit( false );
stmtasbde = connas.prepareStatement(sqlupdbde);

stmtasbde.setInt(1,"ABC");
stmtasbde.setInt(2,"XYZ");
stmtasbde.addbatch();

..
stmtasbde.executeBatch();
connas.commit();
connas.setAutoCommit(true);

Hierbei kommt dann die Fehlermeldung
-----BatchUpdateException-----
SQLState: 55019
.... Journal ....

Wie kann man das verhindern; möchte kein Journal anlegen ?

vorab vielen Dank

WPF
28-07-04, 13:29
das erste connas.setAutoCommit( true ); setzen
dann geht's

Fuerchau
28-07-04, 16:22
Wenn deine Datei nicht journalisiert wird, kannst du auch kein Commit verwenden.

PS:
Warum eigentlich Batch und nicht Direct ?

WPF
29-07-04, 07:09
Wenn deine Datei nicht journalisiert wird, kannst du auch kein Commit verwenden.

PS:
Warum eigentlich Batch und nicht Direct ?
--> Ich muss so ca. 10000 Datensätze "inserten" -> aus performancegründen?

warum dauert der anmeldeprozess solange - connecting auf die as/400:
das java programm läuft innerhalb der q-shell auf der as400 ?

Fuerchau
29-07-04, 08:43
Es gibt keinen Performance-Unterschied zwischen Batch und Direct, ich tendiere sogar dazu, dass der direkte SQL schneller ist.
Mittels Batch werden die SQL-Befehle innerhalb der Java-Umgebung gepuffert (kostet Speicher) und dann intern per Execute zur Ausführung gebracht.
Desweiteren hast du keine richtige Kontrolle über die Aktion. Beim 1. Fehler hört der Batch nämlich auf !

Mal ganz blöd gefragt: Warum machst du das mit Java auf der AS/400 ???

WPF
29-07-04, 10:07
ich weiß, viele wege führen nach rom.

muss zunächst ein ftp-datei transfer machen, um daten auf die as400
zu bringen. wird wahrscheinlich später durch direktzugriff auf eine oracle-db geändert.
erspare mir mit java die cl-rpg-programmierung.

hast du vielleicht eine erklärung für das "lange" laufzeitverhalten bei dem verbindungsaufbau zur as400? wie kann man das beschleunigen?

vorab vielen dank