Verwendung von Resultset im Java-Programm

8
%Vor%

Unter Verwendung des obigen Java-Codes lade ich die Anzahl der Zeilen aus der Tabelle feedsCA ab.

Beim Versuch, die Zählerstände mit rs.getInt (1), rs.getInt (2), rs.getInt (3) abzurufen, beende ich mit einem Fehler wie folgt:

%Vor%

UPDATE:

Die obige Ausnahme wurde behoben.

Aber ich bekomme die folgende Ausnahme, für die ich den Grund nicht kenne. Bitte beraten.

%Vor%

So habe ich mein Programm aktualisiert. Finden Sie einen logischen Weg, wie ich gut verstehen kann, dass die Schleife unten nicht wie erforderlich funktioniert.

%Vor%     
LGAP 25.10.2010, 16:26
quelle

4 Antworten

12

Sie müssen den Cursor der Ergebnismenge in eine Zeile verschieben - entweder nach resultSet.first() oder nach resultSet.next() . Anfänglich zeigt der Cursor vor der ersten Zeile, daher Ihre Ausnahme.

Wenn Sie ResultSet : iterieren möchten:

%Vor%

Update: Für Ihr zweites Problem (wie von Casablanca bemerkt) scheint Ihre Abfrage nur eine Spalte zurückzugeben, und Sie fragen nach einem 2. und 3. - und sie werden nicht gefunden. Beachten Sie, dass in rs.getX(idx) idx die Spalte und nicht die Zeile steht.

    
Bozho 25.10.2010, 16:27
quelle
5

Sie müssen rs.next() aufrufen, bevor Sie auf die erste Zeile zugreifen.

Normalerweise werden Sie über die Ergebnismenge wie folgt iterieren:

%Vor%

Update: Beachten Sie, dass SELECT COUNT(*) ... nur ein Feld pro Zeile zurückgibt. Dies ist die Anzahl. Sie können mehrere Zeilen haben, aber jede Zeile hat nur ein Feld mit dem Index 1. Sie müssen die Zeilen durchlaufen, um alle Zählungen zu erhalten:

%Vor%

Noch ein Update: Es ist schlecht anzunehmen, dass Ihre Abfrage immer nur 3 Zeilen zurückgibt. Wenn Sie sich jedoch absolut sicher sind, können Sie next 3 mal manuell aufrufen:

%Vor%     
casablanca 25.10.2010 16:27
quelle
2

Sie müssen eine der Methoden verwenden, um den Cursor ResultSet in eine Zeile zu verschieben, bevor Sie die Methoden getxxx verwenden. d.h. rs.next() , rs.first() oder rs.last() . Diese Methoden geben true zurück, wenn eine gültige Zeile gefunden wurde, so dass ein typisches Muster

ist %Vor%

oder für eine Abfrage, die mehrere Zeilen zurückgibt:

%Vor%     
mikej 25.10.2010 16:27
quelle
0

Soweit ich weiß, erhält Ihre Abfrage nur eine Zeile und Spalte, d. h. die Gesamtzahl der von Ihrer Abfrage zurückgegebenen Zeilen.

Sagen Sie zum Beispiel:

Wählen Sie Anzahl (*) von emp; Im Allgemeinen gibt diese Abfrage einen Wert 14 zurück.

also dein Java-Code

%Vor%

gibt nur einen Wert zurück, d. h. 14

Wie können Sie also auf rs.getString (2) zugreifen? Dadurch wird automatisch eine Ausnahme ausgelöst, die Sie im zweiten Fall erhalten haben.

    
Sankar 24.09.2012 06:47
quelle

Tags und Links