# Abfrage über zwei Datenbanken



## netty (17. Mai 2005)

Halllo ,

ich möchte eine Abfrage überr zwei Datenbanken machen, nun weiß ich nicht wie ich die Datenbankverbindung aufbauen soll, denn normalerweise geht es ja so:
1. der Treiber wird angeben
Class.forName(driverClass);
2. die Paramenter für den Verbindungsaufbau werden angebenen
Connection con = DriverManager.getConnection(connection , userName ,userPassword);
3. die Abfrage wird aufgebaut
Statment stmt= con.createStatement();
ResultSet rset=stmt.executeQuery(queryString);
Nun hier liegt mein Problem, denn die Abfrage wird über die Connection Variable con auf eine bestimmte Datenbank bezogen, wie aber kann ich es machen das eine Abfrage über zwei Datenbanken möglich wird ???


Für jede Hilfe bin ich dankbar!!!


----------



## Bleiglanz (17. Mai 2005)

zwei connections verwenden und zwei Abfragen stelllen?

Was soll denn eine Abfrage "über zwei Datenbanken" machen, sowas gibts (fast) nicht!


----------



## AlArenal (17. Mai 2005)

Wer ne Anfrage über zwei Datenbanken braucht, muss wohl beim Datenbankdesign gepennt haben.. aber kräftig


----------



## abollm (17. Mai 2005)

AlArenal hat gesagt.:
			
		

> Wer ne Anfrage über zwei Datenbanken braucht, muss wohl beim Datenbankdesign gepennt haben.. aber kräftig



Das würde ich nicht generell sagen, denn es könnte z.B. eine Abfrage für Migrationszwecke sein.


----------



## AlArenal (17. Mai 2005)

Ich kann mir aktuell kein Szenario denken, wo Zugriffe über mehrere Datenbanken zwingend notwendig wären.

Rein SQL-technisch sollte es mit den entsprechenden Privilegien möglich sein über DBNAME.TABELLENNAME auf die Daten zuzugreifen und so auch DB-übergreifend Abfragen zu machen. Ich bin mir aber nicht sicher ob das bei jeder DB funzt und ob dies auch über JDBC funzen würde.


----------



## abollm (17. Mai 2005)

Ich bin mir da auch nicht sicher, aber ich habe einen Fall bei einem Kunden, da könnte man das von mir genannte Szenario anwenden, weil dort regelmäßig Daten von einer DB in eine andere DB geschaufelt werden müssen. Das ist zwar anders gelöst worden, sollte prinzipiell aber auch mit dem genannten Szenario funktionieren.


----------



## netty (17. Mai 2005)

Eine SQL Abfrage über zwei Datenbanken geht auf jedenfall, und zwar so : Select ID, Name , Type From datenbank.1. Adresse  , datenbank2.Personen .......   
Weiter kann es natürllich vorkommen das man zwei Datenbanken hat, und dies kann sehr wohl sinnvoll und notwednig sein, das sind meist komplexe und nicht "null 8 15"Datenbanksysteme - wenn man z.B. gewisse Daten zentral halten möchte, andere nicht usw.
Mein Problem besteht darin  wie man rein vom Programm  her  zu zwei  Datenbanken eine Verbindung aufbaut und dabei über beide eine Abfrage laufen läßt. Allerdings wird bei Connection nur eine Datenbank angeben?


----------



## netty (17. Mai 2005)

zwei connections herstellen und zwei Abfragen stellen wäre eine Notlösung , aber nicht die schönste  und viel aufwediger. Ich kann mir nicht vorstellen , wenn man über ein SQL-Abfrage dies machen kann, dann müsste dies programmtechnisch machbar sein. Oder ???


----------



## Bleiglanz (17. Mai 2005)

>>Eine SQL Abfrage über zwei Datenbanken geht auf jedenfall,

ja, sie funktioniert nur nicht! 

mir fallen jetzt ad hoc nur zwei möglichkeiten ein:

A) MS-SQL-Server: verwende OPEN_ROWSET um eine andere Datenquelle transparent als View in deine DB einzuhängen, dann kannst du normales SQL dagegen laufen lassen

B) kauf dir einen ganz teueren applicationserver (z.B. Weblogic), dort kannst du eine Entitty EJB auf verschiedene Datasourcen verteilen und dann mit der EJBQL so abfragen, als ob das ganze ein "einziges" Gebilde wäre...


----------



## xrax (23. Mai 2005)

Hallo netty,

hast du inzwischen eine Lösung? Ich habe nämlich das selbe ungelöste Problem.

Gruß
xrax


----------

