ODBC-Connection zu mehreren DB's

06/02/2008 - 16:03 von Kurt Tagliati | Report spam
Hallo zusammen

Ich muss auf mehrere Progress DB's zugreifen welche irgendwie verknüpft sind.
Keine Ahnung wie, das Programm wurde eingekauft.

Es gibt eine DB mit allen Daten und eine DB mit allen Angaben unserer User.
Zur Verbindung gibt es je eine ODBC-Verbindung zu den beiden DB's. Nennen
wir sie Daten und User.

Ich muss also zwei ConnectionStrings erstellen. Richtig?
Ich kann doch aber beim CommandString nur eine Connection angeben. Ebenfalls
Richtig?

Wie kann ich nun eine Abfrage mit Daten aus beiden DB's erstellen?
Sollte etwa so aussehen:
SELECT Daten.Tabelle.Feld, User.Tabelle.Feld
FROM Daten.Tabelle.Feld, User.Tabelle.Feld
WHERE Daten.Tabelle.Feld = Irgendetwas

Vielen Dank
Kurt
 

Lesen sie die antworten

#1 ekkehard.horner
07/02/2008 - 14:02 | Warnen spam
Kurt Tagliati schrieb:
Hallo zusammen

Ich muss auf mehrere Progress DB's zugreifen welche irgendwie verknüpft sind.
Keine Ahnung wie, das Programm wurde eingekauft.

Es gibt eine DB mit allen Daten und eine DB mit allen Angaben unserer User.
Zur Verbindung gibt es je eine ODBC-Verbindung zu den beiden DB's. Nennen
wir sie Daten und User.


[...]
Wie kann ich nun eine Abfrage mit Daten aus beiden DB's erstellen?
Sollte etwa so aussehen:
SELECT Daten.Tabelle.Feld, User.Tabelle.Feld
FROM Daten.Tabelle.Feld, User.Tabelle.Feld
WHERE Daten.Tabelle.Feld = Irgendetwas


[...]
Im Prinzip gibt es vier Moeglichkeiten:

(1) Manche DBMS unterstuetzen eine Verbindung von einer DB
zu einer zweiten. In SQLite dient dazu z.B.

ATTACH [DATABASE] database-filename AS database-name

Ob und wie das mit Progress geht, weiss ich allerdings nicht.

(2) Manche Treiber/Provider unterstuetzen den Verweis auf
eine externe DB in SQL-Statements. Hat man z.B. eine ADO/ADO.NET/
OLEDB Connection zu einer .MDB und zwei gueltige ODBC DSNs,
funktioniert so etwas wie

SELECT U.ID, D.ID, ...
FROM [ODBC;DSN=USER].Tabelle1 AS U
, [ODBC;DSNÚTEN].Tabelle1 AS D
WHERE ...

Es ist allerdings nicht ganz leicht, die korrekte Syntax fuer
eine gegebene Kombination von 'Mitspielern' herauszufinden.

(3) Man kann natuerlich auch verknuepfte Tabellen in einer .MDB
verwenden.

(4) ADO.NET spezifisch ist die Methode, ein DataSet aus verschiedenen
DBs zu fuellen. Man hat dann eine 'in memory DB' mit allen
Informationen aus beiden DBs.

Um zwischen diesen Moeglichkeiten zu entscheiden, muesste man mehr
ueber die Ziele der geplanten Anwendung wissen.

Ähnliche fragen