JDBC, ForwardOnly bei ResultSet nach Uebergabe

Status
Nicht offen für weitere Antworten.

Ellegon

Mitglied
Hallo alle,

Ich hab ein Problem und weiss nicht, ob ich einen Design-Fehler habe oder einfach Java nicht richtig anwende ;)

Also, ich hab eine Klasse database(), das den Zugriff auf die Datenbank handhaben soll. Darin sind die Befehle für das Oeffnen und Schliessen der DB, sowie alle Abfragen enthalten. Das funktioniert auch.

Nun möchte ich von einer anderen Klasse aus Daten abfragen und diese in ein ResultSet setzen. Als Uebergabeparamater habe ich das Query, als Return das ResultSet. Auch das funktioniert.

Mein Problem ist nun aber das ResultSet. Das definiere ich in der äusseren Klasse mit

ResultSet rs = null;

und fülle es dann mit

String Query = "Select * from tabelle"
Database db = new Database()
rs = db.SelectQuery(Query)

Innerhalb der database() Klasse kann ich das ResultSet beim erstellen des Statements dann ja auch so definieren, dass ich zurück scrollen kann. Aber das rs in der 'äusseren' Klasse ist ja 'Forward Only', da ich bei 'ResultSet rs = null;' nix definieren kann. Für die weitere Anwendung will ich mich aber innerhalb des ResultSets frei bewegen können...

Was mache ich falsch? Aus Strukturgründen würde ich den Query auf die DB gerne in der database() Klasse drin lassen.

Ellegon
 
S

SlaterB

Gast
> Aber das rs in der 'äusseren' Klasse ist ja 'Forward Only',
> da ich bei 'ResultSet rs = null;' nix definieren kann.

was zum Himmel meinst du denn damit?
wie definierst du ein ResultSet so dass es nicht 'Forward Only' ist?
und warum kann das die Database-Klasse nicht machen?

und wenn es die Database-Klasse macht, wieso geht es außerhalb nciht mehr?
nur weil das Objekt einmal übergeben wird, ändern sich doch nicht dessen Eigenschaften?
das ResultSet weiß doch gar nicht wer es da gerade aufruft..

aber generell solle das ResultSet die Database-Klasse nicht verlassen,
(es sei denn die andere Klasse ist auch eine Database-Klasse, nur eben eine andere)

packe doch alle Elemente in eine andere Datenstruktur, z.B. ein String[][]?
ok, wenn du viele Datentypen hast, dann wird das umständlich ohne ein größeres System
 

Ellegon

Mitglied
Also, vielleicht noch einmal genauer.. ich habe ein Form auf dem ein Button ist, mit dem ich in der Datenbank Daten suchen kann. Sobald ich den drücke, wird der Select String gebildet (basierend auf den Daten im Form) und an die die db-Klasse übergeben. Die ist auch in einem zweiten Package. Bsp:

testprog.GUI (Package für alle GUI Elemente)
testprog.database (Package für alle DB Elemente)

Im Database package habe ich eine Klasse Database(). Darin sind Methoden wie
private void OpenDB()
private void CloseDB()

und

public ResultSet SelectQuery(string)

Mit SelectQuery(string) kann ich nach übergabe des QueryStrings das Resultat in ein ResultSet setzen. Und wie gesagt, das funktioniert ja auch. Um aber ein ResultSet zurückzubekommen, muss ich es ja in der Klasse im Paket testprog.GUI ebenfalls definieren. Ich definiere es aber ohne dazugehöriges Statement, da dass ja dann in der database-Klasse passiert. Ich brauche das RS im GUI Paket ja eigentlich nur als Container, um auf die Daten zugreifen zu können (z.B. dann über GUI hin und herblättern).

Und genau da liegt meine Krux... ;(
 
S

SlaterB

Gast
man definiert nix 'mit zugehörigen Statement',
da hast du die Java-Grundlagen noch nicht verstanden,

es gibt genau eine Stelle, an der das ResultSet-Objekt erzeugt wird,
irgendwo in der DB-Klasse,

danach kann jederman damit arbeiten, selbst eine JSP wenn man sich nur den Aufwand des Transports macht,

für eine externe Klasse stehen vor der Benutzung zwei Aufgaben an:
1.
eine VARIABLE deklarieren, z.B.
ResultSet rs = null;
das hat mit dem späteren Objekt noch nicht viel zu tun,
2.
das Objekt laden:
rs = database.getResultSet();
was die Database-Klasse intern alles anstellt, um das Objekt zu erzeugen, ist extern egal,
hauptsachen am Ende ist das Objekt da und wird der besseren Handbarkeit wegen in einer lokalen Variablen rs gespeichert,
nun kann man mit rs arbeiten,


-------------

ein Problem ist evtl. wenn das ResultSet und/ oder die Datenbank-Verbindung geschlossen ist (close),
dann kann man mit dem ResultSet evtl. nichts mehr anfangen,

das hat aber nichts damit zu tun ob du dich in der Database-Klasse oder außerhalb aufhälst,
das hängt einfach nur vom Zeitpunkt ab,
wenn etwas weg ist, dann ist es danach nicht mehr da..
 

Ellegon

Mitglied
Ah, ok danke. Ich wusste, ich hab ein grundsätzliches Denk-Problem drin ;) Und ja, ich denke noch lange nicht "java konform", sondern meist noch in "alten Schuhen". Ich werde mich da nochmal reinhängen. Für's erste reichen mir aber Deine guten Ausführungen. Danke.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B SQLite + jdbc + IntelliJ-Consumer = "No suitable driver found..." Datenbankprogrammierung 15
J PC-Start Problem JDBC Connection Datenbankprogrammierung 10
N JDBC SQLITE und Cascading Datenbankprogrammierung 2
D Asynchrone Aufrufe mit jdbc Datenbankprogrammierung 5
Edin JDBC Hilfe Datenbankprogrammierung 2
H JDBC Tabellen ausgeben Datenbankprogrammierung 8
Husamoli345 JSF-JDBC Verbindung Crud Datenbankprogrammierung 15
G MySQL JDBC Metadaten auslesen aus .accdb -> Primärschlüssel manchmal erkannt manchmal nicht Datenbankprogrammierung 3
N Java, sql, jar, JDBC-Treiber in Classpath Datenbankprogrammierung 8
O Create Table per JDBC Fehler: ORA-00922 Datenbankprogrammierung 4
J JDBC anschaulich präsentieren Datenbankprogrammierung 2
Thallius MySQL JDBC auf Linux Server zu mySQL DB auf anderem Linux Server wirft Access denied Datenbankprogrammierung 5
ralfb1105 Oracle JDBC Debugging Datenbankprogrammierung 8
Z [JDBC][MYSQL] Access denied Datenbankprogrammierung 7
Thallius MySQL jdbc schließt Verbindung nach vielen Request von selber Datenbankprogrammierung 8
B MySQL JDBC Kommentarfilter Datenbankprogrammierung 4
Aruetiise MySQL Name JDBC Drive finden Datenbankprogrammierung 4
E Sqlite-jdbc Mitliefern Datenbankprogrammierung 4
R jdbc-Zugriff Nicht erlaubt ? Datenbankprogrammierung 16
S probleme mit dem jdbc treiber Datenbankprogrammierung 1
Thallius MySQL Merkwürdiges JDBC Verhalten bei VPN Verbindung. Datenbankprogrammierung 7
O JDBC Daten in zwei Tabellen mit zwei foreach-Schleifen einfügen (insert into) Datenbankprogrammierung 1
F MySQL JDBC Problem Datenbankprogrammierung 5
C JDBC und SQLite Datenbank Datenbankprogrammierung 8
looparda SQLite Active JDBC Abstraktion Datenbankprogrammierung 2
J JDBC SQL Statement mit Parameter Datenbankprogrammierung 7
S JDBC PreparedStatement durchiterieren Datenbankprogrammierung 6
J RESTServie + JDBC + No suitable driver found for jdbc Datenbankprogrammierung 4
KaffeeFan JDBC/ODBC-Bridge entfernt Datenbankprogrammierung 4
S sun.jdbc.odbc.JdbcOdbcDriver wird nicht gefunden Datenbankprogrammierung 2
J Fehlende DatenbankView nach einbeziehen von JDBC Datenbankprogrammierung 3
A Mit JDBC auf postgreSQL Datenbank zugreifen Datenbankprogrammierung 5
C PostgreSQL JDBC + PostgreSQL: getLong liefert 0 statt NULL Datenbankprogrammierung 2
flenst111 SQL-Statement Wie konfiguriert man JDBC-Connect.richtig, damit es bei riesigen Tabs keinen Speicherüberlauf gibt? Datenbankprogrammierung 1
M JDBC Tabellen mit Boolean Spalten können nicht erstellt werden. DB Updaten - wie? Datenbankprogrammierung 6
S JDBC mit Postgres DB connecten Datenbankprogrammierung 3
A Eine MySQL Zeile mit JDBC löschen Datenbankprogrammierung 5
D JDBC - Verständnisfrage Datenbankprogrammierung 2
C Tabelle erstellen mit Apache JDBC-Util Datenbankprogrammierung 1
L Conversion-Error bei JDBC Date Literals Datenbankprogrammierung 3
X MySQL DB-verbindung ohne JDBC/ODBC Datenbankprogrammierung 1
F sun.jdbc.odbc.jdbcodbcdriver wird nicht gefuden Datenbankprogrammierung 3
J Keine Verbindung zu MSSQL DB mit JDBC Datenbankprogrammierung 3
U JDBC prepaird Statements Datenbankprogrammierung 4
B MySQL JDBC Zugriff auf entfernt Datenbank, fehlende Rechte Datenbankprogrammierung 2
Q MySQL JDBC-Treiber Problem Datenbankprogrammierung 2
R Transaktionen von mehreren Anwendungen aus - JDBC Datenbankprogrammierung 3
N MySQL com.microsoft.sqlserver.jdbc.SQLServerException: Die Verbindung wurde geschlossen. Datenbankprogrammierung 1
N JDBC: rollback() bei Exception geht nicht!? Datenbankprogrammierung 1
C Dateipfad des jdbc Treibers Datenbankprogrammierung 2
G JDBC Connect nur über SID fehlerfrei möglich Datenbankprogrammierung 2
R Oracle jdbc Zugriff auf Oracle Datenbankprogrammierung 2
T JDBC Fehler Datenbankprogrammierung 2
J JDBC via Singleton Datenbankprogrammierung 12
Z PostgreSQL JDBC mit Postgresql Datenbankprogrammierung 2
B No suitable driver found for jdbc:oracle:thin:@$HOST:$PORT:$SID Datenbankprogrammierung 7
K JDBC via Netzwerk Datenbankprogrammierung 4
B JDBC Connection Fehler Datenbankprogrammierung 8
K JDBC- In Java "stored procedure" erstellen für DB2,OracleSql ... Datenbankprogrammierung 3
J JDBC in Library|"Treiber konnte nicht geladen werden"" Datenbankprogrammierung 2
B JDBC-Connection: Data source name too long Datenbankprogrammierung 3
D JDBC insert mit select abfrage Datenbankprogrammierung 5
A JDBC Prepared Statement Autoincrement Datenbankprogrammierung 3
H JDBC prüfen ob Table existiert Datenbankprogrammierung 3
crashfinger jdbc-connection mit jre7 funktioniert nicht Datenbankprogrammierung 5
0 JDBC Oracle Verbindungsaufbau Datenbankprogrammierung 6
Q Oracle Linux: ClassNotFoundException: oracle.jdbc.driver.OracleDriver Datenbankprogrammierung 6
B JDBC MySQL Statement Datenbankprogrammierung 3
F Oracle Oracle JDBC Anbindung unter Glassfish 3.1.2 Datenbankprogrammierung 3
V PostgreSQL JDBC Treiber fehlt Datenbankprogrammierung 6
Y JDBC - Datenbankabfrage Webserver Datenbankprogrammierung 4
C JDBC Datenbank funktioniert nicht Datenbankprogrammierung 7
C JDBC , JDO oder JPA Datenbankprogrammierung 17
J MySQL Datenbank konfigurieren, JDBC, MySQL oder Hibernate Datenbankprogrammierung 2
P JDBC Verbindung zur DB klappt nicht Datenbankprogrammierung 6
J Java - JDBC Verbindung zur Datenbank nicht möglich Datenbankprogrammierung 10
K JDBC Buch kaufen? Datenbankprogrammierung 3
K Hibernate vs. JDBC Datenbankprogrammierung 4
K JDBC Driver not found Datenbankprogrammierung 10
GianaSisters Per JDBC auf Microsoft SQL 2005 Datenbankprogrammierung 24
S ich brauche tipps für JDBC Datenbankprogrammierung 4
Paristick MSSQL - JDBC Exception beim Registrieren Datenbankprogrammierung 5
S Applet stucks at SQL Connection (jTDS JDBC) Datenbankprogrammierung 15
R MySQL Voraussetzungen für eine erfolgreiche Datenbankanbindung mittels JDBC Datenbankprogrammierung 2
c_sidi90 JDBC Oracle Connection schlägt fehl Datenbankprogrammierung 2
J jdbc-dataSource in Klassen nutzen Datenbankprogrammierung 2
H Rechnen in Datenbanken - JDBC Mittel der Wahl? Datenbankprogrammierung 32
K MySQL JDBC - Access Datenbank - unbekannter TabellenName Datenbankprogrammierung 4
D JDBC Fehler beim laden der nativen Bibliothek db2jcct2 Datenbankprogrammierung 9
J MySQL Verbindung über JDBC scheitert immer Datenbankprogrammierung 2
I Master/Detail Tabellen mit JDBC und Swing Datenbankprogrammierung 10
S MSSQL JDBC "Driver class not found" Datenbankprogrammierung 9
E Datenbankverbindung mit Oracle JDBC und Eclipse Plugin Quantum db Datenbankprogrammierung 2
ruutaiokwu jdbc connection als singleton Datenbankprogrammierung 11
J MySQL Löschen von Rows mit JDBC Datenbankprogrammierung 9
G JDBC Exception Datenbankprogrammierung 3
Screen Ich suche eine SQLDatenbank ohne JDBC-Treiber Datenbankprogrammierung 12
F Fehlerhandling bei JDBC Datenbankprogrammierung 9
T JDBC und Arrays Datenbankprogrammierung 7
X Oracle JDBC und Joins? Datenbankprogrammierung 7

Ähnliche Java Themen

Neue Themen


Oben