PDA

Vollständige Version anzeigen : Tabellennamen mittels ODBC auslesen


Thomas Gasche
23.09.2003, 12:42
Hallo,

ich habe folgendes Problem:

Ich möchte von einer unbekannten Datenbank (Verbindung über ODBC) die Tabellennamen auslesen, aber OHNE datenbankspezifische Statements.
Also kein "SELECT table_name From XYZ"!!!

Es gibt zwar den ODBC-Befehl SQLTables, aber ich habe keine Ahnung wie ich diesen über .NET absetzen kann.

Das ganze Projekt ist in C# geschrieben.

Am Ende sollte so was wie bei Access rauskommen, wenn ich Tabellen in eine MDB importieren oder einbinden will.

Vielen Dank schon mal.

Gruss
Thomas

Nemesis
29.09.2003, 08:58
Hier ne Lösung für VC++ .net für ne Accesstabelle:

OleDbConnection* DBVerbindung=new OleDbConnection();
DBVerbindung->ConnectionString=S"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\\MeineDatenbank.mdb;";
DBVerbindung->Open();
Object* restrictions[] = {0, 0, 0, S"TABLE"};
DataTable* schemaTable = DBVerbindung->GetOleDbSchemaTable(OleDbSchemaGuid::Tables, restrictions);
dataGrid1->DataSource=schemaTable;

Thomas Gasche
07.10.2003, 10:13
Hallo Nemesis,
danke erstmal für Deine Hilfe.
Jetzt habe ich nur noch das Problem, dass mir der "Provider" nicht bekannt ist. Den kriege ich über ODBC nicht raus (oder ich stelle mich einfach nur zu doof an).
Nochmal zu meinem Problem: Ich muss von einer mir unbekannten Datenbasis Tabellen in eine ACCESS-MDB kopieren. Das einzige was ich über die Datenbasis weiss ist, dass ich sie mit einem ODBC-Treiber ansprechen kann (Also heute DB2, morgen ORACLE, übermorgen SQL-Server, usw. usf.)
Der User soll jetzt eine Box mit allen existierenden Tabellen der Datenbasis erhalten und die auswählen, die zu kopieren sind.
Die Auswahl des zu verwendenden Treibers steht schon, ich muss jetzt also "nur" noch die Tabellen der Datenbasis rausfinden.

Danke für Deine Hilfe!
Thomas

Sascha Trowitzsch
07.10.2003, 11:11
Wenn du über ODBC arbeitest, dann ist der zuständige OLEDB-Provider immer
MSDASQL.1 (Microsoft OLEDB Provider For ODBC Drivers)

Du musst allerdings dann trotzdem den Treibernamen wissen, der noch im Connetion-String untergebracht werden muss. Ohne den geht's nicht,z.B.:
...;DRIVER={MySQL ODBC 3.51 Driver};...

Ciao, Sascha

hschweisthal
07.10.2003, 12:00
test