Das printen der Ausgabe des Oracle-SQL-Statements in der Java-Eclipse-Konsole funktioniert nicht

singhclgn

Mitglied
Ich habe ein Problem. Ich möchte eine SQL-Anweisung in Java implementieren und das Ergebnis dieser Anweisung in der Konsole meiner Programmierumgebung ausdrucken. Wenn ich das tue, gibt es mir die falsche Zahl bzw nur eine random Zahl an:

Mein Java-Code ist:

Java:
ConnectTodb daba = new ConnectTodb("password");
daba.connect();
System.out.println(db.getStatement().executeUpdate("SELECT * FROM (select entry, row_number() over(order by entrie_date desc) rn from entry) where rn = 1"));

Wenn ich das durchführe, gibt es mir die Zahl 0 oder manchmal 1 aus. Das macht keinen Sinn, weil die Zahlen in meiner Datenbank ganz andere sind (wie 8800 oder 110200.23).

Wenn ich denselben Befehl (SELECT * FROM (select entry, row_number() over(order by entrie_date desc) rn from entry) mit rn = 1) in meinem Oracle-SQL-Developer ausführe, gibt es mir die richtige Zahlen...
 
Ich würde Dir empfehlen, einfach einmal eine JDBC Einführung anzusehen. Da dürfte es extrem viele geben.

Oder schau Dir wenigstens die Dokumentation an - was macht eine Methode? Was gibt diese zurück?
In Deinem Fall wäre es die Dokumentation von Connection.executeQuery.

Nur um es kurz zu sagen: Da bekommst Du ein ResultSet zurück. Dieses kann viele (oder auch keine) Daten enthalten und es liegt an Dir, dies auszuwerten. Das erklären die Einführungen aber im Detail, so dass es unnötig ist, das hier im Detail zu erläutern.
 
Ich würde Dir empfehlen, einfach einmal eine JDBC Einführung anzusehen. Da dürfte es extrem viele geben.

Oder schau Dir wenigstens die Dokumentation an - was macht eine Methode? Was gibt diese zurück?
In Deinem Fall wäre es die Dokumentation von Connection.executeQuery.

Nur um es kurz zu sagen: Da bekommst Du ein ResultSet zurück. Dieses kann viele (oder auch keine) Daten enthalten und es liegt an Dir, dies auszuwerten. Das erklären die Einführungen aber im Detail, so dass es unnötig ist, das hier im Detail zu erläutern.
Das habe ich bereits probiert und mehrmals durchgelesen. In meiner Methode habe ich bereits "throws SQLException, Exception" drinne. Aber ich bekomme trotzdem diesen komischen Fehler
 
Du bekommst keinen Fehler. Du bekommst ein ResultSet zurück und gibst dieses einfach aus.

ResulSet (bzw. die Klassen, die dieses Interface implementieren, in deinem Fall die Klasse ForwardOnlyResulSet) überschreiben nicht die toString Methode, weshalb die Implementation von Object greift und daher den Namen der Klasse@hashcode ausgibt.

Also einfach einmal nach "JDBC Einführung" gesucht und erster Treffer in Google war bei mir:

Auf Seite 2 siehst Du dann auch direkt ein Beispiel, wie Du ein ResultSet durchgehen kannst. Da ein ResulSet Zeilenbasiert ist, musst Du Zeile für Zeile durchgehen. mit next() kommt man in die nächste Zeile (und es wird true zurück gegeben oder man ist am Ende angelangt, dann wird false zurück gegeben). Und dann kann man mit diversen getXXX Methoden Daten der Zeile abfragen. XXX ist dann bezüglich Typ wichtig. Als Parameter kommt dann entweder ein index (die sogenannte ordinal number) oder der visuelle Name der Spalte.

==> Daher noch einmal: Bitte wirklich mit den Grundlagen beschäftigen. Das wird in den Einführungen in der Regel sehr gut beschrieben und das Forum ist nicht der richtige Ort, solche Einführungen immer wieder neu zu schreiben.
 
D
Du bekommst keinen Fehler. Du bekommst ein ResultSet zurück und gibst dieses einfach aus.

ResulSet (bzw. die Klassen, die dieses Interface implementieren, in deinem Fall die Klasse ForwardOnlyResulSet) überschreiben nicht die toString Methode, weshalb die Implementation von Object greift und daher den Namen der Klasse@hashcode ausgibt.

Also einfach einmal nach "JDBC Einführung" gesucht und erster Treffer in Google war bei mir:

Auf Seite 2 siehst Du dann auch direkt ein Beispiel, wie Du ein ResultSet durchgehen kannst. Da ein ResulSet Zeilenbasiert ist, musst Du Zeile für Zeile durchgehen. mit next() kommt man in die nächste Zeile (und es wird true zurück gegeben oder man ist am Ende angelangt, dann wird false zurück gegeben). Und dann kann man mit diversen getXXX Methoden Daten der Zeile abfragen. XXX ist dann bezüglich Typ wichtig. Als Parameter kommt dann entweder ein index (die sogenannte ordinal number) oder der visuelle Name der Spalte.

==> Daher noch einmal: Bitte wirklich mit den Grundlagen beschäftigen. Das wird in den Einführungen in der Regel sehr gut beschrieben und das Forum ist nicht der richtige Ort, solche Einführungen immer wieder neu zu schreiben.
Das einlesen hat kein 5 Minuten gedauert und danach die Implementierung. Jetzt klappt es Dankeschön! Sehr nett von dir Konrad!
 

Neue Themen


Zurück
Oben