FM: java.sql.SQLException: Geschlossene Ergebnismenge: next

Status
Nicht offen für weitere Antworten.

cluster

Mitglied
Hallo liebe User,

ich muss eine Datenbankabfrage programmieren, in der nach dem Benutzer aus der Tabelle DB_User gefragt wird und das Kennwort aus der Tabelle DB_User abgefragt wird, und falls das Kennwort stimmt, dann soll aus der Tabelle Pflanzen eine Pflanze selektiert und deren Daten, wie Name, Farbe usw. ausgegeben werden.

Das Problem ist, das ich die Fehlermeldung:
Exception in thread "main" java.sql.SQLException: Geschlossene Ergebnismenge: next
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java)
at oracle.jdbc.driver.OracleResultSetImpl.next(OracleResultSetImpl.java)
at Testen.main(Testen.java:43)

bekomme aber nicht weiß, was er von mir will.

Kann mir jemand weiterhelfen?

Liebe Grüße
Cluster

Vollständigkeitshalber hier der Code:
Code:
import java.sql.*;

import javax.swing.JOptionPane;


public class Testen

{
  public static void main(String[] args) throws SQLException
  //Verbindung zur Datenbank herstellen
  {DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver() );
   Connection con = DriverManager.getConnection(
        "jdbc:oracle:thin:@Computername:1521:XE", "Benutzer", "Kennwort");
       Statement stmt = con.createStatement();
       boolean zugriff = false;
   //Ende    
       
       //     Fragt den Benutzer nach einem String.
       String inputName         = JOptionPane.showInputDialog("Bitte Name eingeben");
       String inputPasswort     = JOptionPane.showInputDialog("Bitte Passwort eingeben");
       String inputPflanzenname = JOptionPane.showInputDialog("Bitte Pflanzennamen eingeben");
       //Ende
       //SQL Abfrage
       ResultSet rset  = stmt.executeQuery("SELECT USER_NAME FROM DB_USER");
       //Ende SQL Abrage
       
              
       while (rset.next())
       {
           String getInputName = (rset.getString("USER_NAME"));
           if (inputName.equalsIgnoreCase(inputName))
           {
               ResultSet rset2  = stmt.executeQuery("SELECT USER_PASS FROM DB_USER " +
                                                    "where USER_NAME = '"+inputName+"'");
               while (rset2.next())
               {
                   String getInputPasswort = (rset2.getString("USER_PASS"));
                   if (inputPasswort.equalsIgnoreCase(inputPasswort))
                   {
                       JOptionPane.showMessageDialog(null, "Zugriff gestattet!");
                       
                       ResultSet rset3 = stmt.executeQuery("SELECT PFLANZENNAME FROM PFLANZEN");
                       while (rset3.next())
                       {
                           String getInputPflanzenname = (rset3.getString("PFLANZENNAME"));
                           if (inputPflanzenname.equalsIgnoreCase(inputPflanzenname))
                           {
                               JOptionPane.showMessageDialog(null,"Pflanze gefunden");
                               rset3.close();
                                     
                           }//endif
                           else
                           {
                               JOptionPane.showMessageDialog(null,"Pflanze NICHT gefunden");                        
                               rset3.close();
                           }//endelse
                       }//endwhile
                       return;
                   }//endif
                   
                   else
                   {
                       rset2.close();
                   }//end else
                       
               }//endwhile
           }//endif
           else
           {
               
           }//endelse
                        
        }//endwhile
       rset.close();
       if(zugriff == false)
       {
           JOptionPane.showMessageDialog(null, "Zugriff verweigert!");
       }//endif
       return;    
        
  }

}
 

thE_29

Top Contributor
Weil du immer das gleiche Statement verwendest!

Wenn alle 3 Selects gleichzeitig laufen, musst du 3 verschiedene Statements nehmen!

Dadurch kommt der Fehler das es zu sei!
 

cluster

Mitglied
hallo danke für deine Hilfe.

ich habe jetzt drei verschiedene Statements gemacht aber die glitzegleiche Fehlermeldung:
Exception in thread "main" java.sql.SQLException: Geschlossene Ergebnismenge: next
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java)
at oracle.jdbc.driver.OracleResultSetImpl.next(OracleResultSetImpl.java)
at Testen.main(Testen.java:45) kommt immer noch :(.
Er mekert mir immer die Zeile: while (rset3.next()) an.

Die Änderungen habe ich unten dazugefügt. Hast du es so gemeint?

Code:
import java.sql.*;

import javax.swing.JOptionPane;


public class Testen

{
  public static void main(String[] args) throws SQLException
  //Verbindung zur Datenbank herstellen
  {DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver() );
   Connection con = DriverManager.getConnection(
        "jdbc:oracle:thin:@....);
[color=brown]
       Statement stmtname         = con.createStatement();
       Statement stmtpasswort     = con.createStatement();
       Statement stmtpflanzenname = con.createStatement();[/color]
       boolean zugriff = false;
   //Ende    

ResultSet rset  = stmtname.executeQuery("SELECT USER_NAME FROM DB_USER");
ResultSet rset2  = stmtpasswort.executeQuery("SELECT USER_PASS FROM DB_USER " +
                                                    "where USER_NAME = '"+inputName+"'");
               while (rset2.next())...
ResultSet rset3 = stmtpflanzenname.executeQuery("SELECT PFLANZENNAME FROM PFLANZEN");
 

thE_29

Top Contributor
Probier mal hier
ResultSet rset3 = stmt.executeQuery("SELECT PFLANZENNAME FROM PFLANZEN");

Vorher erst das statement zu holen!

Und vergiß bei ORACLE nie jedes resultset/Statement zu schließen wenn du fertig bist, sonst haut der dir ne TOO_MUCH_OPEN_CURSORS_EXCEEEDED um die Ohren ;)
 
G

Guest

Gast
Hallo The 29,

ich verstehe nicht ganz...

ich hole in meinem Code doch das Statement vor dem ResultSet?....

Code:
import java.sql.*;

import javax.swing.JOptionPane;


public class Testen

{
  public static void main(String[] args) throws SQLException
  //Verbindung zur Datenbank herstellen
  {DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver() );
   Connection con = DriverManager.getConnection(
        "jdbc:oracle:thin:@....
[color=orange]Statement stmtname         = con.createStatement();
       Statement stmtpasswort     = con.createStatement();
       Statement stmtpflanzenname = con.createStatement();[/color]  [size=18]//hier werden doch die Statements geholt oder???[/size]
       boolean zugriff = false;
   //Ende  

 //     Fragt den Benutzer nach einem String.
       String inputName     = JOptionPane.showInputDialog("Bitte Name eingeben");
       String inputPasswort = JOptionPane.showInputDialog("Bitte Passwort eingeben");
       String inputPflanzenname = JOptionPane.showInputDialog("Bitte Pflanzennamen eingeben");
       //Ende
       //SQL Abfrage
       ResultSet rset  = stmtname.executeQuery("SELECT USER_NAME FROM DB_USER");
       //Ende SQL Abrage
       
              
       while (rset.next())
       {
           String getInputName = (rset.getString("USER_NAME"));
           if (inputName.equalsIgnoreCase(inputName))
           {
               ResultSet rset2  = stmtpasswort.executeQuery("SELECT USER_PASS FROM DB_USER " +
                                                    "where USER_NAME = '"+inputName+"'");
               while (rset2.next())
               {
                   String getInputPasswort = (rset2.getString("USER_PASS"));
                   if (inputPasswort.equalsIgnoreCase(inputPasswort))
                   {
                       JOptionPane.showMessageDialog(null, "Zugriff gestattet!");
                       
                       ResultSet rset3 = stmtpflanzenname.executeQuery("SELECT PFLANZENNAME FROM PFLANZEN");
                       while (rset3.next())
                       {
                           String getInputPflanzenname = (rset3.getString("PFLANZENNAME"));
                           if (inputPflanzenname.equalsIgnoreCase(inputPflanzenname))
                           {
                               JOptionPane.showMessageDialog(null,"Pflanze gefunden");
                               rset3.close();
                               stmtpflanzenname.close();
                                     
                           }//endif
                           else
                           {
                               JOptionPane.showMessageDialog(null,"Pflanze NICHT gefunden");                        
                               rset3.close();
                               stmtpflanzenname.close();
                           }//endelse
                       }//endwhile
                       return;
                   }//endif
                   
                   else
                   {
                       rset2.close();
                       stmtpasswort.close();
                   }//end else
                       
               }//endwhile
           }//endif
           else
           {
               
           }//endelse
                        
        }//endwhile
       rset.close();
       stmtname.close();
       if(zugriff == false)
       {
           JOptionPane.showMessageDialog(null, "Zugriff verweigert!");
       }//endif
       return;    
        
  }

}
 

thE_29

Top Contributor
Jetzt seh ichs erst!

Du DARFST in der while Schleife doch nicht das ResultSet und Statement closen!

Erst nachher, sonst hauts den beim .next() auf!

Du hast das sowieso bei jedem :D
 

cluster

Mitglied
stimmt das lag daran. ich bekomme jetzt die fehlermeldung nicht mehr.

aber wenn ich eine nicht vorhandene pflanze eingebe dann sagt er auch pflanze gefunden.

und wenn ich auf ok oder abbrechen gehe dann schließt das jPanel nicht.
 

cluster

Mitglied
Entwarnung. Das Problem lag daran, dass ich nicht den eingegebenen Namen mit dem Namen in der DB verglichen haben.

Lösung: String getInputPflanzenname = (rset3.getString("PFLANZENNAME"));
if (inputPflanzenname.equalsIgnoreCase(getInputPflanzenname))

Danke für die Hilfe und liebe Grüße
cluster
Code:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
V SQLite java.sql.SQLException: no such column: Datenbankprogrammierung 18
B Probleme mit java.sql.SQLException: ResultSet closed Datenbankprogrammierung 21
nrg Oracle java.sql.SQLException Ungültiger Vorgang bei schreibgeschützter Ergebnismenge Datenbankprogrammierung 0
Y java.sql.SQLException: [Microsoft][ODBC Driver Manager] Invalid cursor state Datenbankprogrammierung 2
I java.sql.SQLException: No data found Datenbankprogrammierung 3
T java.sql.SQLException: unexpected end of statement Datenbankprogrammierung 2
H java.sql.SQLException: Access denied for user 'root'@'localhost' (using password : YES) Datenbankprogrammierung 1
D java.sql.SQLException Datenbankprogrammierung 3
M java.sql.SQLException: Unable to open file Datenbankprogrammierung 2
M java.sql.SQLException: out of memory Datenbankprogrammierung 18
zilti java.sql.SQLException: Before start of result set Datenbankprogrammierung 2
A Problem: java.sql.SQLException Datenbankprogrammierung 5
I hilfe! java.sql.SQLException Datenbankprogrammierung 7
M java.sql.SQLException: No data found Datenbankprogrammierung 9
K MsAccess immer beim zweiten Update java.sql.SQLException Datenbankprogrammierung 28
R MySQL denies access to data source - java.sql.SQLException Datenbankprogrammierung 14
K java.sql.SQLException: Before start of result set Datenbankprogrammierung 2
Juelin Java und MySQL MariaDB - WHERE-Klausel Datenbankprogrammierung 17
P Reicht finally nicht um DB connections zu schließen in (altem) Java? Datenbankprogrammierung 4
A Java DB Server lässt sich nicht starten Datenbankprogrammierung 3
TheSkyRider MySQL Datenbankzuordnung in Verbindung mit Java Datenbankprogrammierung 7
U SQL Server mit Java verbinden Datenbankprogrammierung 5
D SQLite Datenbank in Android Studio (Java) durchsuchen Datenbankprogrammierung 3
TH260199 Java-Programm. Probleme bei der Umsetzung von einer Kontaktverwaltung. Datenbankprogrammierung 7
S Das printen der Ausgabe des Oracle-SQL-Statements in der Java-Eclipse-Konsole funktioniert nicht Datenbankprogrammierung 6
Zrebna Wie mittels Hibernate eine Join-Tabelle als eigene Java-Klasse erstellen? Datenbankprogrammierung 5
Zrebna Noobfrage: Konvertierung von SQL-Datentyp 'timestamp with time zone' in Java-Datentyp Datenbankprogrammierung 3
Zrebna Lediglich interne DB-Verbindungen (Connections) auslesen - mittels Java Datenbankprogrammierung 4
berserkerdq2 Was genau muss ich bei date eingeben, wenn ich in Java eine Spalte definiere, die date ist? Datenbankprogrammierung 1
berserkerdq2 Was kann passieren, wenn ich in java einstelle, dass der Fremdschüssel ein Attribut ist, welches selber kein Primärschlüssel ist? Datenbankprogrammierung 4
berserkerdq2 Foreign key einstellen java Datenbankprogrammierung 4
nikgo Java SQL Ausgabe in Liste o.ä. abspeichern um mit dem Ergbnis "zu arbeiten"? Datenbankprogrammierung 5
S Datenbankprogrammierung in Java unter NetBeans 12 funktioniert nicht! Datenbankprogrammierung 1
Beginner22 Zugriff auf Datenbank aus Java über mariadb Datenbankprogrammierung 3
S ODBC Treiber in Java Editor einbinden Datenbankprogrammierung 3
H Oracle Resize eines Images in Java und Rückgabe des Image als BLOB an die Oracle Datebank Datenbankprogrammierung 14
H Java Class zum komprimieren von Jpeg-Images zum Einbinden in Oracle DB - Bild als blob (in und out) Datenbankprogrammierung 23
B Wie kopieren ich eine Spalte von einer Tabelle in eine andere Tabelle SQLite durch java code? Datenbankprogrammierung 26
D Daten aus der Firebase-Echtzeitdatenbank abfragen und in Variablen speichern (JAVA) Datenbankprogrammierung 0
Slaylen Java List Suchen mit eigenem Generischen Datentyp Datenbankprogrammierung 10
N java sql abfrage bestimmer Datumszeitraum Datenbankprogrammierung 9
D SQL Server Android App: 'int java.lang.String.length()' on a null object reference Datenbankprogrammierung 15
P USER Management in SQL übergreifend auf JAVA Programm Datenbankprogrammierung 1
H MySQL Verbindung Datenbank und Eclipse (Java) Datenbankprogrammierung 5
N Java Abfrage über GUI, Daten hinzufügen Datenbankprogrammierung 54
N Java, sql, jar, JDBC-Treiber in Classpath Datenbankprogrammierung 8
N java SQL JAR - Probleme Datenbankprogrammierung 18
N SQL Datenbank Spalte in Java Array Datenbankprogrammierung 2
N SQL-Statement Java Variable in SQL DB einfügen Datenbankprogrammierung 1
S Verbindung von einer Excel Datei zu Java Datenbankprogrammierung 2
H suche eine Login system Bibliothek für Java Datenbankprogrammierung 5
T Java Spiel Daten speichern Datenbankprogrammierung 1
C Java MySQL check if value exists in database Datenbankprogrammierung 2
N Sqlite DB mit Java wird auf Linuxsystem nicht gefunden Datenbankprogrammierung 9
L Mybatis Datenbankabfragen in Java Datenbankprogrammierung 1
H MariaDB-Zugriff mittels Java SE Datenbankprogrammierung 3
J Java fügt Datensätze ein aber diese werden nicht richtig abgefragt Datenbankprogrammierung 3
S Datenbank MySQL und Java Datenbankprogrammierung 8
S Beispiel-Blockchain + GUI mit Java erstellen Datenbankprogrammierung 0
P Adressadministration mit Java und mySQL Datenbankprogrammierung 14
Trèfle SQLite SQL-Java Änderungen ausgeben Datenbankprogrammierung 1
Dimax MySQL Maximale Datenlänge für eine Spalte einer Datenbank in java ermitteln Datenbankprogrammierung 15
A MySQL Select und Insert in Java Datenbankprogrammierung 15
C Derby/JavaDB Auf Variable aus Link in java server page zugreifen Datenbankprogrammierung 4
platofan23 MySQL Java Programm findet Treiber für mySQL auf Debian-Server nicht? Datenbankprogrammierung 11
F MySQL Einfügen von Datensätzen über Java Datenbankprogrammierung 8
B CSV in Java einbinden und Rechnung Datenbankprogrammierung 7
L Speicherverbrauch Java Anwendung mit einer Datenbankanbindung Datenbankprogrammierung 19
X MySQL Java hat keinen Zugriff auf MySQL Datenbankprogrammierung 9
L Java- Zähle alle Werte aus der Tabelle von aktiver Zelle Datenbankprogrammierung 12
S Datenbank/Java true/false Datenbankprogrammierung 8
S Java und SQL-Befehle Datenbankprogrammierung 6
L INSERT INTO Befehl in Java Datenbankprogrammierung 8
L Datenbankprogrammierung mit Java und phpMyAdmin Datenbankprogrammierung 4
Korvinus Java mit Cassandra verbinden Datenbankprogrammierung 18
M SQL-Statement SQL mit Java, Update Fehler Datenbankprogrammierung 1
D Installation von MariaDB in java und eclipse Datenbankprogrammierung 2
H Datenbank Export mit Java Datenbankprogrammierung 3
I MariaDB-Verbindung in JAVA Datenbankprogrammierung 11
L Oracle Datenbank über Java aufrufen Datenbankprogrammierung 29
W Daten in Java intern abfragen Datenbankprogrammierung 1
W MySQL Ausgabe von Datenbank in Java-App Datenbankprogrammierung 6
D Java Datenbanken Datenbankprogrammierung 1
Y H2 H2 foreign key in Spark Java ausgeben Datenbankprogrammierung 1
J Java Eclipse Hilfe beim Programmieren Datenbankprogrammierung 7
K Java Object mit Hibernate in MySQL abspeichern Datenbankprogrammierung 1
R Java-Befehle/Operatoren für copy&paste Datenbankprogrammierung 2
C Mit asm laufende Java Anwendung manipulieren Datenbankprogrammierung 1
W Wie liest dieses Java-Programm der Compiler? Datenbankprogrammierung 3
K Java Datenbank auslesen Datenbankprogrammierung 8
G MySQL Java Problem: Nullpointer Exception obwohl Daten vorhanden sind? Datenbankprogrammierung 2
K HSQLDB .sql Script Aufruf über Java Datenbankprogrammierung 7
B Java Programm und Dantebank umlagern Datenbankprogrammierung 25
B MySQL bplaced Datenbank mit Java ansprechen Datenbankprogrammierung 11
F MySQL Wie kann ich in Java Datensätze aus einer MySQL Datenbank gezielt in einzelne Arrays schreiben? Datenbankprogrammierung 9
F Java Objekte in einer Datenbank speichern Datenbankprogrammierung 4
perlenfischer1984 Java Objecte speichern mit Hibernate ? Datenbankprogrammierung 2
O PostgreSQL Java Row Index erhalten Datenbankprogrammierung 1
dzim Cassandra Cluster DB und der Java-Treiber Datenbankprogrammierung 1
H Entity in Java implementieren Datenbankprogrammierung 13

Ähnliche Java Themen

Neue Themen


Oben