ResultSet.getString() - Problem
-
Hallo zusammen!
Wenn ich in WinSQL folgende Query ausführe:
SELECT DW_KEY
FROM KADSNT.AVPRIX.VDW0197
WHERE USER_ID = 'KT1179'
ORDER BY DW_KEY ASC
WITH URbekomme ich ein tadelloses Ergebniss. Die
selbe Query lässt sich auch in meinem Programm
ausführen, aber wenn ich versuche mir die
Ergebnisse in Variablen zu ziehen gibts eine SQLException.
Die getMessage Methode liefert nur null...Hier der Quelltext:
Connection con = null; Statement stmt = null; ResultSet rs = null; // Hier zwischen wird noch das SQL erzeugt con = DbConnectionFactory.getConnection; stmt = con.createStatement(); rs = stmt.executeQuery(sql); String[] tempErgebniss = null; int count = 0; while(rs.next()) { tempErgebniss[count] = rs.getString("DW_KEY"); // Hier kommt die Exception! count = count + 1; } rs.close(); stmt.close(); return tempErgebniss;
Hat jemand eine Idee was ich falsch mache?
Gruß,
Woody
-
Bist du sicher, das du eine SQLException bekommst?
String[] tempErgebniss = null; int count = 0; while(rs.next()) { tempErgebniss[count] = rs.getString("DW_KEY"); // Hier kommt die Exception! count = count + 1; }
Dein Ergebnisfeld ist mit null initialisiert.
-
Upsi!
Hast Recht, ist eine normale Exception...Und wenn ich das so machen würde:
while(rs.next()){ tempErgebniss[count] = new String(rs.getString(DW_KEY")); count = count + 1; }
Könnte das dann klappen?
Gruß,
Woody
-
Warum probierst du es nicht einfach? Noch schneller kann dir hier niemand helfen
-
Ok,
ich hab das mit dem
new String(rs.getString("DW_KEY"))
ausprobiert. Das hat schonmal nicht geklappt...Ich würde das Array ja vorher initialisieren, aber die Anzahl der
Datensätze die die Query liefert ist ja variabel...Ich möchte jetzt nicht alles auf ArrayList (ist ja variabel wenn
ich mich recht entsinne) oder so umstellen...das wäre
eine Heidenarbeit... oder ist das meine einzige Chance?Gruß,
Woody
-
Anstatt die Werte in ein Array zu packen, kannst du sie auch in eine Collection, z.B. java.util.Vector packen. Dann bist du in der Größe Variabel.
/Dirk
-
Hallo,
ich habs jetzt mit Vectoren gelöst.
Vielen Dank für eure Hilfe!Gruß,
Woody
-
JDBC-Anfänger schrieb:
Hallo,
ich habs jetzt mit Vectoren gelöst.
Vielen Dank für eure Hilfe!Gruß,
Woody
Da wäre ArrayList auch nicht mehr Arbeit gewesen...
Und wenn's nicht threadsicher sein muß, isset auch erheblich schneller...
Gut, die SQL-Abfrage wird hier eh der Flaschenhals sein...
-
Ich bins nochmal...
Ich seh grade in der API zu ResultSet eine Funktion getFetchSize()...
Hab ich das richtig verstanden (mein Fachenglisch ist nicht so doll), dass
mir die Funktion die Anzahl der Rows im ResultSet zurückgibt?Dann hätte ich mir den ganzen Ärger nämlich sparen können, indem ich die
Arrays mit dieser Zahl initialisiere...Gruß,
Woody
-
Bei den Methoden in Resultset muss man immer vorsichtig sein. Manche DB-Treiber unterstützen die Funktionalität der API nicht im vollen Umfang. Probieren kannst du es allerdings allemal.