batchupdate, es wird nur der letzte Eintrag eingetragen

nieselfriem

Bekanntes Mitglied
Hallo!

In meiner Einfügemethode wird eine ArrayListe vom Typ BewerberBeruf übergeben. Die Daten dieser Liste sollen durch eine Schleife und mit einem Batchupdate in die Datenbank eingefügt werden. Die Daten in der Liste kommen auch so weit an, jedoch wird immer nur der letzte Eintrag der ArrayListe in die Datenbank eingetragen. Das heißt für mich, es gibt eine Fehler in meine Programmierung des Batchupdates. Bisher kann ich ihn jedoch nicht so richtig eingrenzen. Bitte werft mal ein Auge auf meine Methode. Vielleicht könnt ihr mir den Fehler zeigen. Danke!

Java:
 public boolean addBatch(ArrayList<BewerberBeruf> bewBer) throws SQLException, ClassNotFoundException {
        int[] updateCount = null;
        boolean isUpdated = false;
        conn = AllowConnect.driver(this.user, this.password, this.dburl, this.className);
        for (int i = 0; i < bewBer.size(); i++) {
                     stmt = conn.prepareStatement("INSERT INTO `Arbeitnehmer-Berufe` "
                            + "(`Arbeitnehmer-Berufe`.`AN-ID`, "
                            + "`Arbeitnehmer-Berufe`.`Wertigkeit`, "
                            + "`Arbeitnehmer-Berufe`.`Beruf`, "
                            + "`Arbeitnehmer-Berufe`.`Spez`) "
                            + "VALUES (?,?,?,?)");
                    stmt.setInt(1, bewBer.get(i).getBewBerufPId());
                    stmt.setInt(2, bewBer.get(i).getWertigkeit());
                    stmt.setString(3, bewBer.get(i).getBeruf());
                    stmt.setString(4, bewBer.get(i).getSpez());
                    stmt.addBatch();
                }
                    updateCount = stmt.executeBatch();
                    conn.commit();
                    if (updateCount.length > 0) {
                        isUpdated = true;
                        System.out.println("Updatecount"+updateCount.length);
                    }//if
                    //stmt.executeUpdate();
    
            } catch (BatchUpdateException e) {
                e.printStackTrace();
                conn.rollback();
                return false;
            }

        }//if
        conn.close();
        return isUpdated;
    }//addBatch
 
S

SlaterB

Gast
gib doch in der Java-Schleife und davor erstmal aus, wie groß die Size der Liste ist,
und vorallem dann alle Werte pro i, vielleicht sind es immer dieselben, ein häufiger Fehler,

ansonsten vereinfachen, gehe auf eine Testtabelle, gehe auf ein einzelnes Attribut, speichere nur den Wert i, das macht die Liste überflüssig,
verzichte temporär komplett auf die Schleife und schreibe einfach nur 2x hintereinander

stmt.setString(1, "test1");
stmt.addBatch();
stmt.setString(1, "test2");
stmt.addBatch();

usw., immer arbeiten wenn noch direkt möglich,
nicht nur ein großes Programm posten und fragend davor stehen


edit:
oh Mist, das nächste Post enthält natürlich einen besserer Fund ;)
 
Zuletzt bearbeitet von einem Moderator:

parabool

Bekanntes Mitglied
Das du das PreparedStatement in der Schleife immer wieder aufbaust kommt mir spanisch vor...


Edit: Aha, das Statement wird immer wieder aufgebaut - das letzte gewinnt :)
 
Zuletzt bearbeitet:

nieselfriem

Bekanntes Mitglied
gib doch in der Java-Schleife und davor erstmal aus, wie groß die Size der Liste ist,
und vorallem dann alle Werte pro i, vielleicht sind es immer dieselben, ein häufiger Fehler,

dies habe ich bereits getan.
Java:
for (int i = 0; i < bewBer.size(); i++) {

              System.out.println("In Addbatch "+bewBer.get(i).getBeruf() + "," + bewBer.get(i).getSpez() + "," + bewBer.get(i).getWertigkeit());
         }
Es kommen alle werte so an wie sie sollen.

Diesen Fehler kann ich also ausschliessen.

Gruß niesel
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
krgewb Hibernate: Fremdschlüssel wird nicht erzeugt Datenbankprogrammierung 2
D JOIN COLUMN wird nicht genommen Datenbankprogrammierung 2
Maxim6394 JPA / EclipseLink - n:m Beziehung wird nicht aktualisiert Datenbankprogrammierung 0
Maxim6394 JPA 3.2 & SQLite - LocalDateTime wird falsch geladen Datenbankprogrammierung 1
D Ich möchte dass ich nachdem man den Kommentar geschrieben hat den Kommentar in den Tabelle Bestellübersicht geschbeichert wird klappt nicht bei mir Datenbankprogrammierung 2
Watsoon Treiber wird in Intellij nicht geladen Datenbankprogrammierung 2
Kirby.exe PreparedStatement wird nicht ausgeführt Datenbankprogrammierung 5
Z Datenbank Choicebox wird nicht befüllt Datenbankprogrammierung 15
N Sqlite DB mit Java wird auf Linuxsystem nicht gefunden Datenbankprogrammierung 9
J Netbeans 11 und Eclipse JPA 2.5 Entity wird nicht gefunden Datenbankprogrammierung 4
F H2 ObjectOptimisticLockingFailureException wird nicht geworfen Datenbankprogrammierung 0
S sun.jdbc.odbc.JdbcOdbcDriver wird nicht gefunden Datenbankprogrammierung 2
S MySQL Speicher wird nicht freigegeben bei Datenbankabfragen Datenbankprogrammierung 6
D MySQL Eingabe wird nicht übernommen... Datenbankprogrammierung 11
L Select Anweisung wird falsch interpretiert Datenbankprogrammierung 3
F sun.jdbc.odbc.jdbcodbcdriver wird nicht gefuden Datenbankprogrammierung 3
E Nur der letzte Datensatz wird in Tabelle geschrieben Datenbankprogrammierung 4
L JTable-DB: Letzter wert wird nicht angezeigt. Datenbankprogrammierung 0
K Datenbank wird bei Programmstart als .jar nicht mehr befüllt Datenbankprogrammierung 12
T MySQL Datetime wird auf Sekunden gerundet, soll es aber nicht Datenbankprogrammierung 2
N SQL-Statement Auslesen des Resultset wird immer langsamer Datenbankprogrammierung 6
P JSF + H2 + TomEE + Hibernate/JPA Datenbank wird nicht angelegt Datenbankprogrammierung 3
C Programm wird nach DB-Eintrag nicht weitergeführt Datenbankprogrammierung 5
M OutOfMemoryException obwohl nur 1 Eintrag abgefragt wird Datenbankprogrammierung 7
T f:event preRenderView Trigger wird nicht ausgeführt Datenbankprogrammierung 4
P Oracle Hibernate - Oracle-VarChar-Index wird nicht genutzt Datenbankprogrammierung 3
A MySQL Datensatz wird nicht richtig gelöscht Datenbankprogrammierung 6
H Microsoft Access Treiber wird nicht gefunden Datenbankprogrammierung 9
S JPA, Primary Key wird nicht in relationstabelle erstellt Datenbankprogrammierung 3
B MySQL Hibernate (duplicate Entry) Beziehungstabelle wird nicht befüllt Datenbankprogrammierung 8
N batch-Update wird nicht durchgeführt Datenbankprogrammierung 2
M Rückgabewert aus DB wird falsch gelesen Datenbankprogrammierung 3
S Wie überprüfe ich ob die Instanz einer Connection gerade werwendet wird? Datenbankprogrammierung 4
C DB.Treiber wird nicht gefunden? Datenbankprogrammierung 5
E MySQL Treiber wird nicht geladen Datenbankprogrammierung 5
K org.gjt.mm.mysql.driver wird nicht gefunden Datenbankprogrammierung 11
T Unerwartete Datenbankausgabe bei "select now()" (es wird ein .0 angehängt) Datenbankprogrammierung 5
N Ubuntu 9.04 jdbc connector wird nicht gefunden Datenbankprogrammierung 5
K Wird auf den Eintrag referenziert? Datenbankprogrammierung 4
J SqlConnection Instanz wird immer grösser? Datenbankprogrammierung 2
I Sql Befehl wird nicht ausgeführt Datenbankprogrammierung 8
sparrow [Hibernate] Relation wird nicht gespeichert (Topic changed) Datenbankprogrammierung 11
A REVOKE wird nicht durchgeführt Datenbankprogrammierung 2
M Treiber wird nicht gefunden Datenbankprogrammierung 5
P Datenbank wird nicht geschlossen - problematisch? Datenbankprogrammierung 2
N mysql.jdbc treiber wird nicht gefunden Datenbankprogrammierung 2
D Neuer Query wird nicht erkannt Datenbankprogrammierung 10
S JOptionPane wird nicht angezeigt Datenbankprogrammierung 5
W Nur ein Datensatz wird angezeigt, obwohl mehrere existieren Datenbankprogrammierung 7
ven000m SQL Querry wird nicht abgesetzt, da vorher underlined! Datenbankprogrammierung 8
D "Distinct" wird nicht ausgeführt Datenbankprogrammierung 8
H mySql Connector/J Treiber wird nicht gefunden Datenbankprogrammierung 2
C SQLException wenn String auf VARCHAR geschrieben wird Datenbankprogrammierung 10
H JDBC-Treiber wird nicht geladen Datenbankprogrammierung 2
L SQL-Problem: Insert wird nicht ausgeführt Datenbankprogrammierung 5
N Cloudscape wird opensource :) Datenbankprogrammierung 3
X Verbindung zu DB wird zurückgewiesen Datenbankprogrammierung 8
H letzter Datensatz wird nicht gefunden? Datenbankprogrammierung 6
L Letzte, automatisch erzeugte, ID via SQL erhalten Datenbankprogrammierung 6
G letzte INSERT ID herrausfinden Datenbankprogrammierung 4

Ähnliche Java Themen


Oben