Ich bin gerade dabei, ein Servlet zu schreiben, daß Daten aus einer Datenbank ausliest.
Beim Kompilieren werden keine Fehler ausgespuckt, der Application Server schluckt es ebenfalls ohne Probleme, aber es funktioniert nicht.
Der JDBC-Treiber wird geladen. Beim Herstellen der Verbindung wird nicht in die Catch-Anweisung hineingegangen. Scheinbar wird also eine Verbindung hergestellt. Allerdings bleibt das ResultSet leer.
Mir fällt absolut nichts mehr ein. Ich hab schon eine Weile rumprobiert. Wer kann mir einen Tipp geben, woran das liegt?
Wie kann ich allgemein überprüfen, ob eine Verbindung zur Datenbank besteht bzw. bestand?
Ich wuerde jetzt auf den ersten Blick vermuten, dass das Select
schlichtweg keine Ergebnismenge zurueckliefert.
Hast du das fertige Statement mal manuell auf der DB abgesetzt?
(nicht so woertlich nehmen)
Wie kann ich allgemein überprüfen, ob eine Verbindung zur Datenbank :besteht bzw. bestand?
Manchmal bin ich auch zu dusselig! Es lag am falschen Tabellennamen. Jetzt hab ich den Namen korrigiert, und nun wird beim „manuellen Absetzen“ auch etwas zurückgeliefert, aber dafür funktioniert nun das ganze Servlet nicht mehr!
Dies ist der Teil, den ich in meiner ersten Frage ausgelassen habe:
while ( rs.next() ) {
content = content + „\n“ + rs.getDate(1) + „“;
for (int i = 2; i " + rs.getDouble(i) + „“;
}
content = content + „\n“;
}
rs.close();
stmt.close();
con.close();
Das ganze steht in der init() des Servlets. Ich kann mir vorstellen, daß ich einen falschen Datentypen aufrufe. In der Tabelle ist die erste Spalte vom Typ DATE und alle anderen vom Typ DECIMAL(5,2). In der service(ServletRequest req, ServletResponse res) werden nur Ausgaben gemacht, was bis zur Korrektur des Tabellennamen auch ganz gut geklappt hat.
Hmmmmmmmmmm, ich habe jetzt das rs.getDouble(i) durch rs.getBigDecimal(i) ersetzt. Das Servlet funktioniert aber immer noch nicht. Ich kriege immer „HTTP 500 - Interner Serverfehler“ zurück.
Woran könnte es denn noch liegen?
Danke!
Schnoof
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Ich hab jetzt alles von
ResultSet rs = stmt.executeQuery(query);
bis
rs.close()
auskommentiert. Und prompt gibt das Servlet auch wieder was zurück. Wenn ich lediglich die while-Schleife auskommentiert habe, lief es wieder nicht. Also funktioniert wohl schon die Query nicht?
habe, lief es wieder nicht. Also funktioniert wohl schon die
Query nicht?
Hast du sichergestellt das con != null ist bevor du createStatement
aufrufst?
Aber, es wird jetzt langsam unuebersichtlich.
Koenntest du einfach einmal das ganze Servlet posten/schicken?
Oder debugge es zumindest mal mit System.out.println, um die
Stelle einzugrenzen.
Wie sieht der Callstack aus? Kann man daraus was lesen? (Zeilennummer?)