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% 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:
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.
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:
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:
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
oder für eine Abfrage, die mehrere Zeilen zurückgibt:
%Vor%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.