Oracle Problem mit Resultset

MaikHSW

Aktives Mitglied
Hey zusammen.
Ich arbeite in meinem Programm mit einer Oracle-DB.
Das geht auch soweit erstmal sehr gut.
Nun habe ich jedoch folgendes Problem:

Ich stelle eine SQL-Abfrage und bekomme ein Resultset zurück.
Um die Größe zu erfahren damit ich ein Array passend initialisieren kann durchlaufe ich es einmal und zähle mit.

Das mache ich so:
Java:
while (a.getErgebnis().next()) {
Zeilen = Zeilen+1;
 }

Das klappt auch noch erfolgreich.
Wenn ich das Resultset aber nun mit einer Schleife durchlaufe kriege ich nichts zurück.
Schleife:
Java:
	while (b.getErgebnis().next()) {
    	Tabelleninhalt[x][0]=b.getErgebnis().getString(1);
       Tabelleninhalt[x][1]=b.getErgebnis().getString(2);
       Tabelleninhalt[x][2]=b.getErgebnis().getString(3);
       Tabelleninhalt[x][3]=b.getErgebnis().getString(4);
       Tabelleninhalt[x][4]=b.getErgebnis().getString(5);
       Tabelleninhalt[x][5]=b.getErgebnis().getString(6);
       Tabelleninhalt[x][6]=b.getErgebnis().getString(7);
       Tabelleninhalt[x][7]=b.getErgebnis().getString(8);
	 x=x+1;
	}

Nun nehme ich an, dass der Pointer beim Resultset noch auf der letzten Stelle steht und daher das next() nicht so der Hit ist.
Eine Recherche brachte folgende Möglichkeiten der Lösung:
ResultSet.beforeFirst(); ---> setzt den Pointer vor die erste Stelle auf, also genau das was ich eigentlich suche. Oder
Resultset.absolute(X); ---> setzt den Pointer an der X-Stelle wieder auf. Das geht ja auch wenn ich da einfach 0 oder 1 nehme.

In beiden Fällen kommt jedoch ein ganz unschöner Fehler, nämlich folgender:
java.sql.SQLException: Ungültiger Vorgang bei Nur-Weiterleiten-Ergebnismenge: beforeFirst
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.BaseResultSet.beforeFirst(BaseResultSet.java:62)

Auch wenn ich absolute nehme kommt der gleiche Fehler, nur statt beforeFirst steht da dann absolute.
Ich habe es einmal testweise in die Klasse implementiert wo ich die Funktion brauche und einmal direkt in meine Datenbankklasse.
In beiden Fällen brachte es mich kein Stück weiter.

Wie macht man das?
Was mache ich nun schon wieder falsch?

Danke für eure Hilfe.



Gruß
 

Schandro

Top Contributor
du kannst beim Statement-erschaffen nen Parameter dafür mitgeben, dann geht das (weiß ihn grade nicht auswendig)..

aaaber: nimm doch lieber ne ArrayList, dann hast du das Problem garnicht mehr... warum willst du das in ein dummes Array stopfen?
 

MaikHSW

Aktives Mitglied
Hey Schandro.
Das will ich, weil ich das dann in Folge an eine JTable übergebe zwecks Darstellung.
Das scheint mir der einfachste Weg zu sein.
Okay, ich kann nen Parameter mitgeben.
Aber wenn du ihn nicht weißt bzw. ich die Anwendung des Parameters nicht kenne hilft der mir nur bedingt weiter :)


Gruß
 

MaikHSW

Aktives Mitglied
Hey Mvitz.
Ich habe ja nur das Resultset genommen da Oracle bereits in der Form die Daten bereitstellt.
So spare ich mir das Konvertieren.
Also sollte ich vom Resultset in die ArrayList und von da ausgehend in das Array konvertieren?

Wo ist der Vorteil der ArrayList?
Wenn ich mich nicht täusche ist das eine Liste und somit ist der Zugriff nicht frei wählbar,
man muss also wieder durch die Liste iterieren.
Oder?


Gruß
 

Schandro

Top Contributor
nein, ne ArrayList ist intern nur ein Array... du kannst mit O(1) auf alle Elemente zugreifen...
deswegen kostet es auch nichts das wieder in ein Array umzuwandeln.

ergo: nimm ArrayList!
 
L

Lodrik

Gast
du kannst beim Statement-erschaffen nen Parameter dafür mitgeben, dann geht das (weiß ihn grade nicht auswendig)..

Ich denke, dass was Schandro meinte ist folgendes:

Java:
Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);

Wenn du das ganze in einer JTable anzeigen möchtest. Könntest du dir ja noch eine Klasse erstellen und diese von AbstractTableModel erben lassen.

Ich hoffe, dass hilft dir weiter.

mfg
 

MaikHSW

Aktives Mitglied
Hey Lodrik.
Das mit AbstractTableModell ist mir aktuell noch etwas zu hoch,
das kommt später mal :)
Den Befehl versuche ich mal, danke.


Gruß

P.S. Die Parameter waren es. Nur die ergänzen und schon klappt es wunderbar. Die Arraylist-Umbaute kann somit perspektivisch erfolgen und ist nicht zeitkritisch. Danke.
 
Zuletzt bearbeitet:

mvitz

Top Contributor
Noch ein Tipp am Rande.

Nutze wo immer du kannst Implementierungen des Interfaces List --> ArrayList oder LinkedList anstelle von Arrays. Es ist einfach wesentlich eleganter und auch einfacher mit diesen zu arbeiten.
 

MaikHSW

Aktives Mitglied
Hey mvitz.
Hab das einen Hintergrund?
Ich würde es gerne verstehen da ich ja Anfänger bin....
Wo ist die Eleganz? Und wie implementiert man die richtig? Ganz normal, vergleichbar mit einem Array?


Gruß
 

mvitz

Top Contributor
Rein von der Nutzung sind List und das Array recht ähnlich.

Was beim array double ist ist in der Liste list.get(i).
Beim reinfüllen double = 1.0 ist in der Liste entweder list.add(1.0) oder list.add(i, 1.0).

Wieso man das macht, weil der Umgang mit Listen halt angenehmer ist und viele der Klassen eine Liste als Parameter erwarten und kein Array mehr. Zudem wachsen Arrays mit und haben nicht eine vorher festgelegte Größe, was z.B. für Resultsets von Vorteil ist.
 

MaikHSW

Aktives Mitglied
Hey.
Okay, das verstehe ich.
Ich danke dir für deine Erklärung.

Nun muss ich doch mal ernsthaft über eine Änderung meiner Sourcen nachdenken :)



Gruß
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Resultset.last() Problem Datenbankprogrammierung 12
I Problem mit ResultSet Datenbankprogrammierung 2
M Problem mit ResultSet bei SQL Server 2005 Datenbankprogrammierung 6
K problem mit resultset->arraylist Datenbankprogrammierung 11
T Problem beim Update vom Resultset + Firebird Datenbankprogrammierung 2
R Resultset DELETEROW Problem Datenbankprogrammierung 7
K Mal wieder Problem mit resultSet , kennt nicht getString() Datenbankprogrammierung 2
R Select und Insert in Schleife - Problem mit ResultSet Datenbankprogrammierung 2
G resultset problem Datenbankprogrammierung 2
F ResultSet-Problem Datenbankprogrammierung 12
J PC-Start Problem JDBC Connection Datenbankprogrammierung 10
C Problem mit Apache Poi Datenbankprogrammierung 6
N HSQLDB Problem mit Eclipselink in runnable Jar Datenbankprogrammierung 10
P GroupLayout-Problem Datenbankprogrammierung 12
F XAMPP max connections problem Datenbankprogrammierung 6
C MySQL Problem in phpMyAdmin Oberfläche Datenbankprogrammierung 5
C Problem with INSERT.............ON DUPLICATE KEY Datenbankprogrammierung 3
C Problem with insertion in database. Datenbankprogrammierung 7
F Problem mit Hibernate c3p0 Datenbankprogrammierung 2
W Problem mit Insert in zwei Tabellen Datenbankprogrammierung 8
G MySQL Problem mit MySQL verbindung Datenbankprogrammierung 8
A kleines Problem Datenbankprogrammierung 6
T Problem mit Datenbankverbindung Datenbankprogrammierung 22
V Derby/JavaDB updateRow Problem Datenbankprogrammierung 0
G MySQL Java Problem: Nullpointer Exception obwohl Daten vorhanden sind? Datenbankprogrammierung 2
Nuiton EmbeddedDriver Problem Datenbankprogrammierung 6
A MongoDB Passwort Problem Datenbankprogrammierung 0
O HSQLDB Hibernate Criteria Problem Datenbankprogrammierung 3
F MySQL JDBC Problem Datenbankprogrammierung 5
Anfänger2011 Datenbankstruktur/aufbau (theoretisches Problem) Datenbankprogrammierung 5
M Derby/JavaDB Drop Database problem Datenbankprogrammierung 3
M Derby/JavaDB NOT LIKE problem Datenbankprogrammierung 19
N HSQLDB Problem mit EntityManager Datenbankprogrammierung 7
B MySQL JPAContainer Problem Datenbankprogrammierung 4
K Eclipse Apache Derby Treiber Problem Datenbankprogrammierung 4
C Problem oder Denkfehler mit H2-Database Datenbankprogrammierung 3
E Wie kann man das Problem mit der BLOB-Spalte lösen? Datenbankprogrammierung 1
M Problem mit jcouchdb und CouchDB - UTF8 kein gültiger Zeichentyp Datenbankprogrammierung 4
T MySQL Problem mit Datenbankanbindung Datenbankprogrammierung 4
M INSERT-Problem = integrity constraint violation: foreign key no parent Datenbankprogrammierung 5
P SQL Query Problem Datenbankprogrammierung 14
A MySQL Problem bei Tabelle ausgeben Datenbankprogrammierung 3
Q MySQL JDBC-Treiber Problem Datenbankprogrammierung 2
B SQLite Problem bei Planung der Datenbank [Jeopardy] Datenbankprogrammierung 3
A Problem mit dem Import und Export von Bildern Datenbankprogrammierung 4
P Oracle Problem mit Umlauten Datenbankprogrammierung 9
A Problem mit Create-Statement Datenbankprogrammierung 9
D Problem mit COLUMN_IDENTIFIERS Datenbankprogrammierung 8
Bluedaishi MySQL Abfrage Problem :-) Datenbankprogrammierung 21
M Problem mit mehreren Datasourcen Datenbankprogrammierung 3
M Problem GroupBy Datenbankprogrammierung 3
S CURRENT_DATE problem Datenbankprogrammierung 2
M Problem mt JPA Id-Generators Datenbankprogrammierung 18
Gossi Oracle Problem mit group by... Datenbankprogrammierung 22
M MySQL SQL Abfrage Problem Datenbankprogrammierung 6
R MS-SQL Express Login-Problem Datenbankprogrammierung 8
P Lazy-Fetchig und Session-Problem mit Hibernate Datenbankprogrammierung 4
N HSQLDB Problem beim Treiberladen im Jar Datenbankprogrammierung 6
M Problem beim Erstellen einer Query Datenbankprogrammierung 7
C Hibernate ManyToMany zusammengesetzter Primärschlüssel, problem. Datenbankprogrammierung 3
M Problem mit HQL Syntax Datenbankprogrammierung 5
K Db4o Delete Problem Datenbankprogrammierung 11
Mike90 Deadlock/Lock Problem Datenbankprogrammierung 4
T Access 32bit on Win7 64Bit ODBC Problem Datenbankprogrammierung 1
C unverständliches DB Problem (Es ist kein temporärer Systemtabellenbereich mit einer ausreichenden..) Datenbankprogrammierung 5
S ODBC Treiber Problem/oder unvermögen Datenbankprogrammierung 18
J Problem bei Boolean in PreparedStatement Datenbankprogrammierung 5
C MySQL Problem mit UPDATE Abfrage Datenbankprogrammierung 13
C Problem mit SQL-Abfrage Datenbankprogrammierung 5
K Problem mit Datenbankverbindung via Eclipse Datenbankprogrammierung 2
A Problem mit Eintragen von Daten in eine Datenbank mittels DAO Datenbankprogrammierung 4
S Oracle Problem mit PreparedStatement.setString(1,"str") Datenbankprogrammierung 10
B MySQL Problem mit Datenbankanbindung an MySQL Datenbankprogrammierung 2
N Problem bei Erstellung eines Index Datenbankprogrammierung 12
C Hibernate Property-Problem Datenbankprogrammierung 5
J MyBatis - Update Problem Datenbankprogrammierung 4
S JPA: Problem mit Update von Daten Datenbankprogrammierung 7
c_sidi90 Hibernate Problem Table doesnt excist Datenbankprogrammierung 8
M Problem mit JPA - OneToMany-Relation Datenbankprogrammierung 3
I Hibernate: Composite Foreign Key Problem Datenbankprogrammierung 14
S JPA OptimisticLocking Problem Datenbankprogrammierung 11
I Derby/JavaDB Problem mit Befüllung von Tabelle Datenbankprogrammierung 7
JavaKaffee Derby/JavaDB Quartz-WebAnwendung - Connection/Treiber Problem Datenbankprogrammierung 47
L Excel in MySQL importieren Problem Datenbankprogrammierung 5
S Problem beim Anlegen einer Tabelle Datenbankprogrammierung 5
R MS Access mit Java Problem mit Update Statment Datenbankprogrammierung 13
S MySQL Problem mit SELECT bzw encoding Datenbankprogrammierung 4
T Problem beim schreiben von daten Datenbankprogrammierung 4
M MySQL getConnection - Verbindung Problem Datenbankprogrammierung 2
K Hibernate + MySQL Problem... Datenbankprogrammierung 2
I MySQL MySQL – Proxy Problem Datenbankprogrammierung 4
M Problem mit Hibernate und Named Query Datenbankprogrammierung 1
M Problem mit Hibernate und Access Datenbankprogrammierung 9
C firebird problem Datenbankprogrammierung 5
F Problem mit Datenbankabfrage Datenbankprogrammierung 7
K SQL Problem mit Date Datenbankprogrammierung 3
jeppi MySQL Design-Problem: DB-Verbindung herstellen und halten - JdbcRowSet / Idle-Timeout? Datenbankprogrammierung 9
J sql abfrage ... Problem mit Datumswert Datenbankprogrammierung 3
G MySQL Connection Problem Datenbankprogrammierung 3
O MySQL Problem mit Umlauten?! Datenbankprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben