ResultSet NullPointerException

Happymaker

Mitglied
Hallo!
Ich möchte eine Collection mit mehreren Objekten Füllen!
Die Objekteigenschaften werden aus einer MySql Datenbank ausgelesen
und gespeichert!
Jedes mal wenn mein Resultset in der Datenbank auf ein Feld mit einem Null
Wert stost ist es vorbei.
Vielleicht kann mir ja jemand helfen!
 
Hm ich weiss jetzt nicht genau was du mit " ist es vorbei" meinst .. Aber ResultSet hat die Methode:

public boolean wasNull()

.. Mit der kann man sicher eine entsprechende Abfrage machen und solche Werte abfangen.
 
Ich hab das mal gleich ausprobiert!
bei mir würde das so aussehen!

if (rse.getString("PersNr")!= null)
{
benutzerstamm.setPersNr(rse.getString("PersNr"));
}

Mit dem Vorbei meine ich dass dann die NullPointerException kommt!

Noch ein paar infos benutzerstamm enthält alle eigenschaften eines Mitarbeiter
in einer Firma! Praktisch eine Mitarbeiterverwaltung!

jetzt noch eine Frage:

Würdet ihr eine LinikedList einen Array oder Collection ...
nehmen um alle Mitarbeiter speichern zu können?

Danke für die super schnelle Antwort!
Chris
 
Kann es sein, dass du eine NullPointerException bekommst? Die genau Fehlermeldung weiß ich nicht mehr, aber im Wortlaut könnte es "after result set is closed...." sein.

Diese Exception bekommst du wenn du entweder das ResultSet Object, das Statement Object oder die Connection mit .close() beendest.

Mit dem ResultSet arbeitest du, soviel ich weiß, direkt mit der/auf der Datenbank.

Gruß

Romsl
 
Noch was kann ich mir da nicht eine Methode schreiben die mir das überprüft ob ein Feld in der Datenbank NULL ist?
Weil ich ungefähr 20 Felder überprüfen muss!
Das ist ein bisschen Redundant!*g*

Chris
 
Nein eine Solche NullPointerException bekomme ich nicht!
ich bekomme die Fehlermeldung erst in der While schleife in der ich das Resultset durchlaufe, und wenn das ResultSet auf einen Null Wert in der Datenbank stöst!
Chris
 
Du kannst dir die Anzahl der Spalten auslesen.

Code:
Statement stmt = con.createStatement();
ResultSet data = stmt.executeQuery("SELECT * FROM tabelle");
ResultSetMetaData metaData = data.getMetaData();
int columns = metaData.getColumnCount();

Und in der while Schleife eine for Schleife legen, die so lange läuft wie du Spalten hast.

Gruß Romsl
 
Und was bringt mir die for Schleife?
Ich möchte für jeden Mitarbeiter alle Eigenschaften in benutzerstamm speichern!
Diese in irgendeiner Collection oder Array oder LinkedList speichern und dann
Ausgeben! Praktisch alle Mitarbeiter mit allen Eigenschaften!

Das mit dem

if (rse.getString("Name_Zusatz") != null)
{
benutzerstamm.setNameZusatz(rse.getString("Name_Zusatz"));
}

funktioniert einwandfrei!

Aber jetzt bräuchte ich noch Hilfe wie ich und wohin ich alle Mitarbeiter hinspeichere damit ich sie später ausgeben oder weiterverarbeiten kann!

Danke
Chris
 
Eine LinkedList ist im weitesten Sinne eine Collection. LinkedList implementiert List und List wiederrum ist abgeleitet von Collection.

Wenn du eine LinkedList verwendest musst du eben darauf achten wenn du einen solchen NULL Wert bekommst diesen (oder einen leeren String "") in die Liste mit aufzunehmen.

Vorteil der Liste ist, dass du keine feste Größe angeben brauchst und jeder Zeit neue Werte dazwischen schieben kannst. Nachteil was dich aber nicht stören wird ist der Höhere Aufwand bei der Suche nach Elementen in der Liste.

Du könntest jede Zeile des ResultSet in eine LinkedList oder Array einlesen. Und diese List oder dieses Array wieder in eine Liste oder Array legen.
Geschachtelte Liste. Dann hast du jeden Mitarbeiter in einer extra Liste und alle Mitarbeiter eben in einer darüberliegenden Liste.

Das gleiche würde auch mit einem Vector funktionieren.

Hoffe ich hab dich diesmal verstanden.

Gruß

Romsl
 
Zurück