ERLEDIGT
NEIN
NEIN
ANTWORTEN
23
23
ZUGRIFFE
1313
1313
EMPFEHLEN
-
07.09.04 10:31 #1
- Registriert seit
- Aug 2004
- Beiträge
- 42
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!
-
07.09.04 10:42 #2
- Registriert seit
- Mar 2001
- Ort
- München
- Beiträge
- 4.785
Code :1 2
if(rs.getString("spalte")!=null) collection.add(rs.getString("spalte"));
Oder was willst du genau?!Erst wenn der letzte Programmierer eingesperrt...
...und die letzte Idee patentiert ist, werdet ihr merken, dass Anwälte nicht programmieren können.
-------------------
chris: hey Tom hast du eigentlich ne Freundin
jdar: ich bin tutorials.de Mod!
-
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.:-) möp
-
07.09.04 10:49 #4
- Registriert seit
- Aug 2004
- Beiträge
- 42
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
-
07.09.04 10:51 #6
- Registriert seit
- Aug 2004
- Beiträge
- 42
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
-
07.09.04 10:53 #7
- Registriert seit
- Aug 2004
- Beiträge
- 42
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 :1 2 3 4
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
-
07.09.04 11:08 #9
- Registriert seit
- Aug 2004
- Beiträge
- 42
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
-
07.09.04 11:21 #11
- Registriert seit
- Aug 2004
- Beiträge
- 42
Genau so mit der LinkedListe möchte ich das machen!
Alle eigenschaften von jedem Mitarbeiter!
Hast du da evtl. einen Quellcode da?
ich weiß nicht so genau wie ich das machen soll!
Diesmal hast du mich haargenau verstanden!
-
Du musst noch die Importe hinzufügen.
import java.util.*;
import java.sql.*;
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
public LinkedList getResultInList(ResultSet data) { LinkedList returnList = new LinkedList(); try { ResultSetMetaData metaData = data.getMetaData(); int columns = metaData.getColumnCount(); //mit dem !data.wasNull() bin ich mir nicht sicher while (data.next() && !data.wasNull()) { LinkedList inList = new LinkedList(); for (int i = 1; i <= columns; i++) { inList.add(data.getObject(i)); } returnList.add(inList); } } catch (SQLException e) { e.printStackTrace(); } return returnList; }
-
07.09.04 11:44 #13
- Registriert seit
- Aug 2004
- Beiträge
- 42
Danke
ich werd ausprobieren!
Chris
-
07.09.04 11:52 #14
- Registriert seit
- Aug 2004
- Beiträge
- 42
Und wie kann ich jetzt wieder alles auslesen
Wäre super wenn du da auch ein beispiel hättest!
Chris
-
Zur Verbesserung der Performance könntest du die Listen mit .toArray() in Arrays umwandeln (da eine Liste jedesmal von vorne beginnt durchzugehen wenn du die einzelnen Werte holst, mit einem Array kannst du gezielt Werte herauspicken).
Code :1 2 3 4 5 6 7 8
public void getListContent(LinkedList list) { for (int i = 0; i < list.size(); i++) { LinkedList inList = (LinkedList) list.get(i); for (int j = 0; j < inList.size(); j++) { System.out.println(inList.get(j)); } } }
Könntest du nicht direkt auf dem ResultSet arbeiten, ich meine ohne die Daten zuerst in eine Liste zu speichern und dann auszulesen?
Hoffe es hat Dir geholfen.
Gruß
Romsl
Ähnliche Themen
-
Dynamisches resultSet
Von anjepieft im Forum Algorithmen & Datenstrukturen mit JavaAntworten: 3Letzter Beitrag: 20.05.10, 13:04 -
ResultSet frage
Von Freak2k im Forum JavaAntworten: 13Letzter Beitrag: 09.06.05, 07:36 -
ResultSet
Von illaX im Forum JavaAntworten: 5Letzter Beitrag: 31.03.05, 14:59 -
ResultSet und Schleifen
Von Der nette Mann im Forum JavaAntworten: 1Letzter Beitrag: 28.10.04, 13:37 -
ResultSet
Von tinella im Forum JavaAntworten: 6Letzter Beitrag: 14.10.04, 12:01





Zitieren
Login





