Benutzer mit den meisten Antworten
Bei OdbcConnection.GetSchema auf bestimmte Tabellennamen filtern

Frage
-
Hi,
ich rufe alle Tabellennamen mittels der Funktion OdbcConnection.GetSchema("", "") ab.
Da mir die Tabellennamen z.T. bekannt sind, möchte ich die Ermittlung gerne eingrenzen.
Z.B. nach "Alle Tabellen die den Begriff 'MeineFirma' oder 'MyCompany' enthalten.
Wie kann ich eine solche Filterung aufnehmen?
Vielen Dank und viele Grüße
Christian
Antworten
-
Hallo Christan,
die GetSchema Methoden unterstützen zwar Restriktionen, siehe Schemaeinschränkungen (ADO.NET)
Nur ob dabei auch Wildcards unterstützt werden, hängt vom jeweiligen Provider ab (meist nicht).Das einfachte (portablste) ist i. a. alle Tabellen abzurufen, ggf. durch Catalog, Schema beschränkt.
Solange das Datenbank-Schema nicht sehr, sehr groß ist macht das i. d. R. kaum einen Unterschied,
da Schemainformationen i. a. ohnehin von gecacht werden.Und danach jeweils einen Filter z. B. via DataTable.Select vorzunehmen.
Gruß Elmar
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Freitag, 3. Dezember 2010 14:01
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 22. Dezember 2010 11:39
-
Hallo Christian,
ja, Du bist hier mit der Methode, "alle" Tabellen aus dem Schema zu lesen und dann mit .NET Methoden zu filtern, deutlich flexibler und das halte ich hier für die pragmatisch beste Methode. Hier auch ein paar C# Infos dazu bei OleDb, was Du dann eben entspechend ODBC umsetzen musst:
[Schema Informationen aus Datenbanken ermitteln]
http://dzaebel.net/ShowViewColumn.htm
Von der Performance her wird das keinen großen Effekt haben, dass Du erst nach der Abfrage filterst. Ich würde aber wahrscheinlich eher ein eigenes Dictionary für die TableNames machen, als mit DataTable.Select arbeiten, aber das ist auch kein kriegsentscheidendes Thema.
ciao Frank- Als Antwort vorgeschlagen Frank Dzaebel Freitag, 3. Dezember 2010 15:43
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 22. Dezember 2010 11:39
Alle Antworten
-
Hallo Christan,
die GetSchema Methoden unterstützen zwar Restriktionen, siehe Schemaeinschränkungen (ADO.NET)
Nur ob dabei auch Wildcards unterstützt werden, hängt vom jeweiligen Provider ab (meist nicht).Das einfachte (portablste) ist i. a. alle Tabellen abzurufen, ggf. durch Catalog, Schema beschränkt.
Solange das Datenbank-Schema nicht sehr, sehr groß ist macht das i. d. R. kaum einen Unterschied,
da Schemainformationen i. a. ohnehin von gecacht werden.Und danach jeweils einen Filter z. B. via DataTable.Select vorzunehmen.
Gruß Elmar
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Freitag, 3. Dezember 2010 14:01
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 22. Dezember 2010 11:39
-
Hallo Christian,
ja, Du bist hier mit der Methode, "alle" Tabellen aus dem Schema zu lesen und dann mit .NET Methoden zu filtern, deutlich flexibler und das halte ich hier für die pragmatisch beste Methode. Hier auch ein paar C# Infos dazu bei OleDb, was Du dann eben entspechend ODBC umsetzen musst:
[Schema Informationen aus Datenbanken ermitteln]
http://dzaebel.net/ShowViewColumn.htm
Von der Performance her wird das keinen großen Effekt haben, dass Du erst nach der Abfrage filterst. Ich würde aber wahrscheinlich eher ein eigenes Dictionary für die TableNames machen, als mit DataTable.Select arbeiten, aber das ist auch kein kriegsentscheidendes Thema.
ciao Frank- Als Antwort vorgeschlagen Frank Dzaebel Freitag, 3. Dezember 2010 15:43
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 22. Dezember 2010 11:39