ResultSet is closed tritt bei JSF aber nicht bei einer Java-Applikation auf

Holy Diver

Mitglied
Bin mir nicht ganz sicher ob das jetzt der richtige Bereich ist da der Fehler nur bei einer JSF-Anwendung auftritt.
Jedes Mal wenn ich die Methode getSpecialSettings in einer JSF-Anwendung aufrufe führt dies zu
der SQL-Exception: Operation not allowed after ResultSet closed.

Führe ich folgende Java-Applikation aus kommt es aber zu keinem Fehler:
Java:
public static void main(String[] args) {
		LinkedList<Integer> n=new LinkedList<Integer>();n.add(798);
		LinkedList<specialsetting> s=DAO.getInstance().getSpecialSettings(n);
		s=DAO.getInstance().getSpecialSettings(n);
		DAO.getInstance().getClasses();
		s=DAO.getInstance().getSpecialSettings(n);
	}
getSpecialSettings:
Java:
public LinkedList<specialsetting> getSpecialSettings(LinkedList<Integer> IDs) {
		
             ........
		// Get a Statement:
		Statement stmt = pool.checkOut();
		
		try {
			ResultSet res = stmt.executeQuery(Query);
			....
			int ID;
			String sd_name,desc;
			while(res.next()){//Nach einen Durchlauf tritt hier der Fehler auf
				ID=res.getInt("ID");
				sd_name=res.getString("sd_name");
				desc=res.getString("description");
				
				........

				System.out.println("res "+res.isClosed());
				System.out.println("stmt " +stmt.isClosed());
			}//while
			.....	
		} catch (SQLException e) {
			e.printStackTrace();
		}
		// Return the Statement:
	    pool.checkIn(stmt);
		return specialsettings;
	}
Ausgabe:res true
stmt false
java.sql.SQLException: Operation not allowed after ResultSet closed

Der Pool gibt meinem Erachten kein Statement zweimal zurück, wenn er dies machen würde, gäbe es ja auch bei der Java-Applikation einen Fehler.
Ich benutze mysql-connector-java-5.1.18 und einen Tomcat v6.

Würde mich über Lösungsvorschläge oder über Vermutungen zur Ursache freuen.
 
S

SlaterB

Gast
> Der Pool gibt meinem Erachten kein Statement zweimal zurück

Tipp: erachte nicht sonder prüfe und wisse dann,
gibt von den ResultSets den HashCode aus, oder speichere sie temporär in Variablen und vergleiche sie mit ==,
oder wrappe alle Statements in eigenen Klassen und gib ihnen eindeutige Nummern im Konstruktor

ohne den Pool ist jedenfalls keine gute Aussage zu treffen,
wird dort jemals close() ausgeführt? wenn in deinem Code, dann logge auch das, wieder mit Hashcode/ == / Nummer

checkOut/ checkIn soll gleichzeitige Verwendung vermeiden?

logge ob bei JSF die Aufrufe von verschiedenen Threads gleichzeitig kommen
(Beginn, Ende loggen, Thread.getCurrentThread() für den Ausführer usw.,
die Parameter-Ids sind auch sicher gleich und haben keinen Einfluss wie Exception bei der Query oder so?)
 
Zuletzt bearbeitet von einem Moderator:
M

maki

Gast
Deine Statement Pool Implementierung ist wohl fehlerhaft bzw. vom Grundkonzept falsch, IMHO poolt man keine Statements sondern Connections, jeder moderne JDBC Treiber bringt einen ConnectionPool mit.
 

Holy Diver

Mitglied
> Der Pool gibt meinem Erachten kein Statement zweimal zurück

Tipp: erachte nicht sonder prüfe und wisse dann,

wird dort jemals close() ausgeführt?
checkOut/ checkIn soll gleichzeitige Verwendung vermeiden?
Sollten eigentlich schon dürfte aber nicht ganz funktionieren.
res.close() wird nirgends aufgerufen(wurde alles auskommentiert)
Bis zu folgenden Punkt wird immer ein checkOut und als nächstes ein CheckIN(es war immer nur ein Statement im Umlauf)

Ausgabe:
SpecialSettingsBean created!
Thread[http-8080-2,5,main] checkOut 1
Thread[http-8080-2,5,main] checkOut 1
Thread[http-8080-2,5,main] checkIn 1
res true
exstmt.stmt false
java.sql.SQLException: Operation not allowed after ResultSet closed

>
die Parameter-Ids sind auch sicher gleich und haben keinen Einfluss wie Exception bei der Query oder so?)
Ich habe mir den Parameter bei getSpecialSettings ausgegeben lassen und ihn bei der Java-Applikation verwendet, also diese sind sicher gleich.
Java:
public synchronized ExtendedStatement checkOut() {
		Statement stmt;
		ExtendedStatement exstmt;
		if (unlocked.size() > 0) {
			for(int i=0;i<unlocked.size();i++){
				stmt=unlocked.get(i).stmt;
				exstmt=unlocked.get(i);
					if (validate(stmt)) {
						unlocked.remove(stmt);
						locked.add(exstmt);
						System.out.println("checkOut"+exstmt.ID);
						return (exstmt);
					} else {
						// object failed validation
						unlocked.remove(exstmt);
						expire(stmt);
						i--;
						stmt = null;
						exstmt=null;
					}
			}
		}
		exstmt = create();
		locked.add(exstmt);
		System.out.println("checkOut"+exstmt.ID);
		return (exstmt);
	}
public synchronized void checkIn(ExtendedStatement stmt) {
		locked.remove(stmt);
		//unlocked.put(stmt, System.currentTimeMillis());
		System.out.println("checkIn"+stmt.ID);
		unlocked.add(stmt);
	}

 protected ExtendedStatement create() {
	    try {
	    	if(conn.isClosed()){
	    		NewConn();//Erzeugen der Connection
	    		}
	    	nrofstmt++;
	    	ExtendedStatement exstmt=new ExtendedStatement(conn.createStatement(),nrofstmt);
	    	return (exstmt);
	    } catch (SQLException e) {
	      e.printStackTrace();
	      return (null);
	    }
	  }

Deine Statement Pool Implementierung ist wohl fehlerhaft bzw. vom Grundkonzept falsch, IMHO poolt man keine Statements sondern Connections, jeder moderne JDBC Treiber bringt einen ConnectionPool mit.
Der Pool soll verhindern, dass die Statments immer neu erzeugt werden müssen und soll somit die Performance verbessern. Der Pool ist allerdings eine Vorgabe für mich.
 
M

maki

Gast
Der Pool soll verhindern, dass die Statments immer neu erzeugt werden müssen und soll somit die Performance verbessern. Der Pool ist allerdings eine Vorgabe für mich.
Hört sich ehrlich gesagt sehr wirr an...
Gibt es Beweise dafür dass es dann schneller geht?

Ein ResultSet gehört zu einem Statement und dieses wiederrum zu einer Connection.
Connection wird geschlossen -> Statement wird geschlossen -> ResultSet wird geschlossen

Wie gesagt, halte das Poolen von Statements wie hier für grundsätzlich falsch.
 
S

SlaterB

Gast
oha, da habe ich in meinen Posts ja einiges durcheinandergebracht,
im Pool sind die Statements, und die sind ja (hier) nie geschlossen, habe dein Ausgabe-Log falsch interpretiert,
dann muss dazu ja auch nicht wirklich was geprüft werden wie HashCode-Vergleich,
obwohl trotzdem durchaus interessant sein kann, ob ein Statement wiederverwendet wird

eigentlich wollte ich dazu ja fragen ob die Statements geschlossen werden, an die ResultSets hatte ich gar nicht gedacht,
auch als Text verwechselt in meinem Posting

jetzt schreibst du
> res.close() wird nirgends aufgerufen(wurde alles auskommentiert)
das ist ja auch nicht so lustig, ResultSets sollten schon geschlossen werden, am Ende der Methode,

ist das ganze eigentlich reproduzierbar oder zufällig?
jetzt aufs ResultSet konzentriert: logge von Anfang an, von der Query, bis in die Schleife in jedem Schleifendurchlauf
und zu deiner schon vorhandenen Ausgabe, wann ist das ResultSet offen, wann erstmals geschlossen?
direkt nach executeQuery() doch sicher noch offen oder auch schon zu?
danach zu einem festen reproduzierbaren Zeitpunkt (wann?) oder wechselnd?

gerade wechselnd würde für einen anderen Thread sprechen, denn die Wiederverwendung des Statements,
eine neue Query mit neuen ResultSet, schließt das erste ziemlich sicher, wenn ich mich nicht komplett irre

das Log
> SpecialSettingsBean created!
> Thread[http-8080-2,5,main] checkOut 1
> Thread[http-8080-2,5,main] checkOut 1
> Thread[http-8080-2,5,main] checkIn 1

spricht ja auch dafür, dass das Statement 1 zweimal gleichzeitig herausgegeben wird, oder?
das wäre dann ja der Fehler, obwohl es nicht nach verschiedenen Threads aussieht,
kann es sein dass ein Thread verschachtelt mehrmals Statements anfordert?
widerspricht wiederum der funktionierenden main-Variante..

lieber doch mehrere Threads vermuten, merke dir diese auch irgendwo, z.B. bei jedem checkOut in einer Liste,
dazu ==-Vergleich mit den vorhandenen, ausgeben

aber letztlich kann das auch egal sein, zweimal
> Thread[http-8080-2,5,main] checkOut 1
> Thread[http-8080-2,5,main] checkOut 1
ist doch in jedem Fall ein Fehler, oder?

ich kann in dem Code zum Pool vorerst nicht so viel erkennen
 
Zuletzt bearbeitet von einem Moderator:

Holy Diver

Mitglied
Gibt es Beweise dafür dass es dann schneller geht?
Ich kenne keine,allerdings habe ich mich bis jetzt eher wenig mit Performance beschäftigt
Ein ResultSet gehört zu einem Statement und dieses wiederrum zu einer Connection.
Connection wird geschlossen -> Statement wird geschlossen -> ResultSet wird geschlossen
Das kann hier allerdings nicht der Grund für den Fehler sein,da das Statement zum Zeitpunkt des Fehlers noch offen ist.


jetzt schreibst du
> res.close() wird nirgends aufgerufen(wurde alles auskommentiert)
das ist ja auch nicht so lustig, ResultSets sollten schon geschlossen werden, am Ende der Methode,
Grundsätlich passiert dass bei mir immer vor dem zurückgeben,allerdings wurde dies im Laufe der Fehlersuche auskommentiert.
ist das ganze eigentlich reproduzierbar oder zufällig?
Der Fehler tritt immer auf,wenn ich die Methode mit einer ID,welche in der DB vorhanden ist,aufrufe.
jetzt aufs ResultSet konzentriert: logge von Anfang an, von der Query, bis in die Schleife in jedem Schleifendurchlauf
und zu deiner schon vorhandenen Ausgabe, wann ist das ResultSet offen, wann erstmals geschlossen?
direkt nach executeQuery() doch sicher noch offen oder auch schon zu?
Direkt nach dem execute müsste es noch offen sein,sonst würde die Schleife nicht ausgeführt.
danach zu einem festen reproduzierbaren Zeitpunkt (wann?) oder wechselnd?

gerade wechselnd würde für einen anderen Thread sprechen, denn die Wiederverwendung des Statements,
eine neue Query mit neuen ResultSet, schließt das erste ziemlich sicher, wenn ich mich nicht komplett irre
Hier irrst du dich sicher nicht,denn Fehler hatte ich vor nicht ganz so langer Zeit.
das Log
> SpecialSettingsBean created!
> Thread[http-8080-2,5,main] checkOut 1
> Thread[http-8080-2,5,main] checkOut 1
> Thread[http-8080-2,5,main] checkIn 1

spricht ja auch dafür, dass das Statement 1 zweimal gleichzeitig herausgegeben wird, oder?
das wäre dann ja der Fehler, obwohl es nicht nach verschiedenen Threads aussieht,
kann es sein dass ein Thread verschachtelt mehrmals Statements anfordert?
widerspricht wiederum der funktionierenden main-Variante..
Schaut für mich auch danach aus,dass ein Statment zweimal zurückgegeben wird.
Allerdings sollte das mit den Listen und dem synchronized verhindert werden.

Es gibt Methoden die mehr als ein Statment benutzen oder eine andere Methode aufrufen(die wiederum ein Statment) benutzen,während diese noch ein stmt aus dem Pool haben.
lieber doch mehrere Threads vermuten, merke dir diese auch irgendwo, z.B. bei jedem checkOut in einer Liste,
dazu ==-Vergleich mit den vorhandenen, ausgeben
Ich habe jetzt bei jedem System.out.printl("checkOut"...) ein threads.add(Thread.currentThread().hashCode());.
//LinkedList<Integer> threads=new LinkedList<Integer>();
Beim CheckIn threads.removeFirstOccurrence(Thread.currentThread().hashCode()); und am Anfang von CheckOut:if(threads.contains((Thread.currentThread().hashCode()))){
System.out.println("Thread gets multiple stmt");}
Hoffe das war so gemeint.

aber letztlich kann das auch egal sein, zweimal
> Thread[http-8080-2,5,main] checkOut 1
> Thread[http-8080-2,5,main] checkOut 1
ist doch in jedem Fall ein Fehler, oder?
Wenn es zweimal das gleiche Statment ist,ist es sicher ein Fehler.

Log:
SpecialSettingsBean created!
Thread[http-8080-1,5,main] checkOut 1
res1 false
res2 false
res3 false
res3.0.1 false
Thread gets multiple stmt
Thread[http-8080-1,5,main] checkOut 1
Thread[http-8080-1,5,main] checkIn 1
res3.1 true
res4 true
exstmt.stmt false
java.sql.SQLException: Operation not allowed after ResultSet closed

Der Fehler titt also zwischen 3.01 und 3.1 auf
Java:
....
System.out.println("res3 "+res.isClosed());
				if(specialsettings.isEmpty() && specials==null){
					specials=new specialsetting();
                                        //Wertzuweisungen
					specials.ID=ID;
					.......
                                        System.out.println("res3.0.1 "+res.isClosed());
					specials.extendRoomlist(upis, getRoomList(re_ID,upis));
					System.out.println("res3.1 "+res.isClosed());
				}
...
private LinkedList<Room> getRoomList(int re_ID,String upis)
	{
		String Query="..."
		// Get a Statement:
		ExtendedStatement exstmt = pool.checkOut();
		LinkedList<Room> roomlist = new LinkedList<Room>();
		
		try {
			ResultSet res=exstmt.stmt.executeQuery(Query);
			while(res.next()){
				roomlist.add(new Room(res.getString("room_ID"),res.getInt("size")));
			}
			//res.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
	    pool.checkIn(exstmt);
	    return roomlist;
	}
Der Fehler dürfte wirklich darin liegen, dass getRoomList(..) ein bereits verwendetes Statemant bekommt. Ich kann aber nicht nachvolzihen warum der Pool ein Statemant zweimal vergibt.
 
S

SlaterB

Gast
schöne Debug-Log-Ausgaben, sieht man seltener als ich sie fordere ;)
warum machst du damit im Pool nicht weiter?
habe ihn mir jetzt erst angeschaut, soviel du davon gepostet hast,
du läßt ja gar manche Variablen wie unlocked/ locked im Dunkeln, auch wenn es wohl Listen sind,

der Code ist aber überschaubar mit nur wenigen Schleifen, add/ remove, das kann man doch im Detail anschauen,
wie groß ist die Liste, welche Elemente werden geprüft, warum gelten sie jeweils als ok oder nicht ok usw.,

der aktuelle Fehler scheint
> unlocked.remove(stmt);
zu sein, in der Liste ist doch stmt gar nicht drin sondern exstmt,
das exstmt bleibt so in unlocked und kann mehrfach zurückgegeben werden,

falls du diese Wrapper-Klasse erst auf meinen Vorschlag hin gebaut hast, bin ich wohl daran schuld und es mag der Original-Fehler immer noch irgendwo schlummern,
so wie es aktuell steht dürfte die main-Methode auch scheitern, oder?
denn dort wird ja genauso die Untermethode mit zweitem checkOut usw. gerufen
 

Holy Diver

Mitglied
warum gelten sie jeweils als ok oder nicht ok usw.,
Die Methoden hatte ich nicht gepostet, da sie ja nicht der Grund für eine doppelte Ausgabe sein kann.
[Java]
private LinkedList<ExtendedStatement> locked;
private LinkedList<ExtendedStatement> unlocked;
.....
public void expire(Statement stmt) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public boolean validate(Statement stmt) {
try {
return (!stmt.isClosed());
} catch (SQLException e) {
e.printStackTrace();
return (false);
}
}[/Java]
der aktuelle Fehler scheint
> unlocked.remove(stmt);
zu sein, in der Liste ist doch stmt gar nicht drin sondern exstmt,
das exstmt bleibt so in unlocked und kann mehrfach zurückgegeben werden,

falls du diese Wrapper-Klasse erst auf meinen Vorschlag hin gebaut hast, bin ich wohl daran schuld und es mag der Original-Fehler immer noch irgendwo schlummern,
so wie es aktuell steht dürfte die main-Methode auch scheitern, oder?
denn dort wird ja genauso die Untermethode mit zweitem checkOut usw. gerufen
Ja die main funktionierte auch nicht mehr.
Die Wrapper-Klasse entstand erst auf den Vorschlag hin,aber wenn ich nun unlocked.remove() mit exstmt aufrufe tritt das ResultSet nicht mehr auf, obwohl das ja nicht der Grund für den vorherigen Fehler sein kann und auch wenn ich die ExtendedStatements mit normalen Statements austausche geht es auch.

Die einzige Änderung die mir einfällt wäre,dass ich bei
Java:
} else {
		// object failed validation
		unlocked.remove(stmt);
		expire(stmt);
		i--;
		stmt = null;
	}
das i--; hinzugefügt hatte. Dies würde aber nur dazu führen, dass ein Statement übersprungen würde und damit eines erzeugt wird obwohl sich ein anderes noch in Unlocked befindet.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Probleme mit java.sql.SQLException: ResultSet closed Datenbankprogrammierung 21
J SQLite ResultSet closed -- Wiederholende DB-Abfragen Datenbankprogrammierung 6
S ResultSet closed Datenbankprogrammierung 2
P ResultSet closed Datenbankprogrammierung 7
A Operation not allowed after ResultSet closed Datenbankprogrammierung 13
S ResultSet als Parameter an andere Klasse übergeben Datenbankprogrammierung 3
Z ResultSet ist null warum? Datenbankprogrammierung 12
R HSQLDB ResultSet update aktualisiert DB, aber nicht das ResultSet Datenbankprogrammierung 2
Dimax Erstellen ResultSet und Statement Datenbankprogrammierung 30
C PostgreSQL ResultSet.TYPE_SCROLL_SENSITIVE setzen Datenbankprogrammierung 2
L MySQL Bekomme einen Fehler beim ResultSet Datenbankprogrammierung 12
L Zugriff auf ein Resultset Datenbankprogrammierung 7
L MySQL ResultSet vollständig auslesen Datenbankprogrammierung 20
D Resultset schließen ?? Datenbankprogrammierung 5
T Oracle Resultset to Array sehr langsam. Datenbankprogrammierung 8
Z MySQL Probleme mit resultSet executQuery Datenbankprogrammierung 3
L ResultSet Datenbankprogrammierung 1
J wie mit resultset.next() über Datensätze iterieren? Datenbankprogrammierung 15
R MySQL Umgang mit ResultSet/Fremdschlüssel ausgeben Datenbankprogrammierung 2
D MySQL ResultSet als Stream weiter geben Datenbankprogrammierung 9
M ResultSet Cachen Datenbankprogrammierung 3
R ResultSet mit "Untertabellen" Datenbankprogrammierung 4
N SQL-Statement Auslesen des Resultset wird immer langsamer Datenbankprogrammierung 6
R Resultset.last() Problem Datenbankprogrammierung 12
PaulG Leeres ResultSet initialisieren Datenbankprogrammierung 6
J Frage zu ResultSet Datenbankprogrammierung 3
J SQL ResultSet Previous Datenbankprogrammierung 10
S MySQL ResultSet in ein Array übertragen Datenbankprogrammierung 7
H PostgreSQL Objekte aus ResultSet Datenbankprogrammierung 5
O Oracle Resultset greift auf Spaltenüberschriften zu Datenbankprogrammierung 2
Kenan89 Wieso klappt das ResultSet nicht? Datenbankprogrammierung 3
C ResultSet enthält nicht alle Daten Datenbankprogrammierung 4
F Derby/JavaDB Resultset in JTablemodel Datenbankprogrammierung 2
F Oracle ResultSet zu einer HashMap<Integer, String[]> Datenbankprogrammierung 6
B SQLite ResultSet is TYPE_FORWARD_ONLY Datenbankprogrammierung 5
T Exception ResultSet Datenbankprogrammierung 7
0 ResultSet in JTable Datenbankprogrammierung 14
S [SQL] ResultSet Datenbankprogrammierung 4
R ResultSet Datenbankprogrammierung 4
I Sonderbehandlung wenn ResultSet leer ist Datenbankprogrammierung 9
I Problem mit ResultSet Datenbankprogrammierung 2
I SQL_Abfrage-Ergebnis (ResultSet) in String[] speichern Datenbankprogrammierung 29
B ResultSet wirft komische NullPointerException. Datenbankprogrammierung 3
R Detached ResultSet Datenbankprogrammierung 3
F generelle Vorgehensweise ResultSet Datenbankprogrammierung 5
S ResultSet Datenbankprogrammierung 2
A MySQL ResultSet.updateBytes schlägt fehl Datenbankprogrammierung 2
F ResultSet kann Datenbank nicht update, warum? Datenbankprogrammierung 3
T ResultSet befehl für leere Spalte nicht lesen Datenbankprogrammierung 4
S ResultSet einer Datenbankabfrage - Nullpointer Exception Datenbankprogrammierung 13
A PostgreSQL anfängerfrage: resultset zeilenweise auslesen Datenbankprogrammierung 2
T MySQL ResultSet zurückgeben nachdem Connection geschlossen wurde? Datenbankprogrammierung 3
K Keine ResultSet bei if in StoredProcedure Datenbankprogrammierung 16
D ResultSet gibt nichts aus. Datenbankprogrammierung 3
trash ResultSet Syntax Fehler Datenbankprogrammierung 11
ARadauer JDBC ResultSet schließen? Datenbankprogrammierung 4
M Oracle Problem mit Resultset Datenbankprogrammierung 11
J jdbc ResultSet types Datenbankprogrammierung 5
R Frage zu PreparedStatement/ResultSet Datenbankprogrammierung 16
F ResultSet to String[] Datenbankprogrammierung 3
E ResultSet in HashMap Datenbankprogrammierung 8
K Tabelle mit resultset refreshen? Datenbankprogrammierung 4
M Problem mit ResultSet bei SQL Server 2005 Datenbankprogrammierung 6
S ResultSet in ArrayList ablegen Datenbankprogrammierung 17
G Daten aus ResultSet in String-Liste Datenbankprogrammierung 13
T ResultSet initialisieren Datenbankprogrammierung 2
C kein Resultset Datenbankprogrammierung 2
G ResultSet: String mit Anführungszeichen einlesen Datenbankprogrammierung 8
T ResultSet-Inhalt in Arrays schreiben Datenbankprogrammierung 3
S ResultSet variabel auslesen Datenbankprogrammierung 4
D Anzahl der Elemente im ResultSet ermitteln Datenbankprogrammierung 8
A Leeres ResultSet mit H2 unter Vista Datenbankprogrammierung 3
A Warum ist mein ResultSet leer? Datenbankprogrammierung 5
Z ResultSet mit einer anderen Datenquelle Datenbankprogrammierung 7
O Spaltenname aus Resultset Datenbankprogrammierung 2
thE_29 ResultSet und doppelte Spalten Datenbankprogrammierung 4
E Neues select auf ein vorhandenes Resultset Datenbankprogrammierung 11
E ResultSet vergisst Reihe? Datenbankprogrammierung 2
N resultset aus andere klasse übergeben Datenbankprogrammierung 3
F ResultSet refresh moeglich? Datenbankprogrammierung 3
S ResultSet enthält keine Daten Datenbankprogrammierung 2
B Geschlossenes ResultSet Datenbankprogrammierung 6
T ResultSet#next Ungültige Reihenfolge (DB2) Datenbankprogrammierung 5
T ResultSet schließen? Datenbankprogrammierung 6
S Tabelle updaten wenn ResultSet aus JDBC-Quelle Datenbankprogrammierung 2
S ResultSet Datenbankprogrammierung 6
F Filtern innerhalb eines Resultset Datenbankprogrammierung 12
S Connection/Statement/ResultSet auf einmal geschlossen Datenbankprogrammierung 8
@ Like-Klausel; NPE bzw. leeres ResultSet Datenbankprogrammierung 4
C Resultset nach connection close weiterreichen Datenbankprogrammierung 5
B No ResultSet was produced Datenbankprogrammierung 2
S ResultSet erweitern ? Datenbankprogrammierung 4
E JDBC, ForwardOnly bei ResultSet nach Uebergabe Datenbankprogrammierung 4
R ResultSet liefert oracle.sql.TIMESTAMP, aber unbrauchbar Datenbankprogrammierung 9
A Probleme mit ResultSet und getString(i) Datenbankprogrammierung 13
RaoulDuke ResultSet - Wie arbeitet sowas intern Datenbankprogrammierung 2
N Probleme mit "nur vorwärts gerichtete ResultSet" Datenbankprogrammierung 7
G Für jede SQL-Abfrage eigenes Statement und ResultSet? Datenbankprogrammierung 3
T MAX und ResultSet#next Datenbankprogrammierung 10
R ResultSet zu bestimmtem DS navigieren Datenbankprogrammierung 4

Ähnliche Java Themen

Neue Themen


Oben