[JDBC] mehrere statements setzen

TommyMo

Erfahrenes Mitglied
hi leute!

vor kurzem hatte ich die aufgabe gestellt bekommen aus einer datenbank vergleiche zu ziehen. also eine tabelle mit der anderen zu vergleichen und die einzelnen unterschiede herauszufinden. keine schwere aufgabe.

das problem das ich dabei hatte war, dass ich auf eine bestehende verbindung (Connection object) nicht mehr als ein statement mit einem resultset setzen konnte ... und ich kann mir das irgendwie nicht ganz erklären. wärt ihr so net? :rolleyes:

euer
TOM

PS: aja, ich hatte einen SQL server 2000 abzufragen. mittels ODBC. also eh ganz klar.
 
Hallo!

Also normallerweise kann man von einem Connection Objekt viele Statement Objekte bekommen (okay nicht ganz beliebig viele wegen der knappen Systemresourcen).

weiterhin kannst du dir von einem Statement Objekt beliebig (siehe oben) viele ResultSet Objekte besorgen, jedoch nur streng sequentiell und nachdem das jeweils letzte ResultSet geschlossen wurden ist (close()).

Sprich:

Code:
Connection con = ...

Statement stmt = con.createStatement();

ResultSet rs = stmt.executeQuery("SELECT * FROM FOO");

while(rs.next()){
  ...
}

rs.close();

ResultSet rs2 = stmt.executeQuery("SELECT * FROM BAR");

while(rs2.next()){
   ...
}

Gruß Tom
 
hi Tom!

jep, das is mir klar. paß auf, mein code schaute ca. so aus, also eigentlich mehr die idee die ich hatte:

Statement statement = connection.newStatement();
ResultSet resultSet = statement.executeQuery(" .... ");

while (resultSet.next()) {
Statement statement2 = connection.newStatement();
ResultSet resultSet2 = statement2.executeQuery(" .... ");

while (resultSet2.next()) {
..........
}

.................
}

ich hab auch probiert eine zweite connection aufzubauen, und von der wieder ein zweites statement zu machen, unabhängig von der ersten connection. allerdings hat das auch nicht hingehaun.
 
Ich weiß nicht ob dir das hilft...

Wenn ich dich richtig verstanden habe, dann möchtest du diejenigen datensätze herausfiltern, welche unterschiedlich sind?! Also kannst du doch einfach zwei anfragen auf die datenbank starten....

select * from tabelle1
minus
select * from tabelle2;

danach

select * from tabelle2
minus
select * from tabelle1;

Aber wahrscheinlich hab ich dein Problem falsch verstanden-oder?
Naja.. schönen Tag noch!
 
Zurück