Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Tabellen in Datenbank auflisten.
Scarface
myCSharp.de - Member



Dabei seit:
Beiträge: 186
Herkunft: Baden-Württemberg

Themenstarter:

Tabellen in Datenbank auflisten.

beantworten | zitieren | melden

Kann ich alle in der Datenbank enthaltenen Tabellen irgendwie herausbekommen?
Gibt's da was in C# oder geht das irgendwie über ein SQL-Kommando?
private Nachricht | Beiträge des Benutzers
Noodles
myCSharp.de - Experte



Dabei seit:
Beiträge: 4802
Herkunft: Leipzig

beantworten | zitieren | melden

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
private Nachricht | Beiträge des Benutzers
Scarface
myCSharp.de - Member



Dabei seit:
Beiträge: 186
Herkunft: Baden-Württemberg

Themenstarter:

beantworten | zitieren | melden

Hab ich auch schon versucht. Da kommt immer "Datei ...Eigene Dateien\INFORMATION_SCHEMA.mdb nicht gefunden."
private Nachricht | Beiträge des Benutzers
Noodles
myCSharp.de - Experte



Dabei seit:
Beiträge: 4802
Herkunft: Leipzig

beantworten | zitieren | melden

Kannst Dir auch mal OleDbConnection.GetOleDbSchemaTable(...) anschauen.
private Nachricht | Beiträge des Benutzers
CB.NET
myCSharp.de - Member

Avatar #avatar-2838.gif


Dabei seit:
Beiträge: 729
Herkunft: bei Berlin

beantworten | zitieren | melden

hallo,
probiere mal


use db_name
Exec SP_Tables

das gibt mir alle tabellen aus der DB

gerade im Query analyzer getestet
--------------------------------
DotNetGerman Bloggers
private Nachricht | Beiträge des Benutzers
Noodles
myCSharp.de - Experte



Dabei seit:
Beiträge: 4802
Herkunft: Leipzig

beantworten | zitieren | melden

Das ist aber DB-abhängig. Die Information_Schemas sollten überall vorhanden sein. Und wie Du ja siehst, nutzt er eine Access DB.
private Nachricht | Beiträge des Benutzers
Scarface
myCSharp.de - Member



Dabei seit:
Beiträge: 186
Herkunft: Baden-Württemberg

Themenstarter:

beantworten | zitieren | melden

Funktioniert auch nicht.
Vielleicht sollte ich dazusagen, dass es ne Access DB ist.

GetOleDbSchemaTable werd ich mir mal anschauen.
private Nachricht | Beiträge des Benutzers
Scarface
myCSharp.de - Member



Dabei seit:
Beiträge: 186
Herkunft: Baden-Württemberg

Themenstarter:

beantworten | zitieren | melden

Scheint so als könnte Access das OleDbSchemaTable nicht:
The {e93a23e8-e2e5-4030-ab2a-1e2d36ebc676) OleDbSchemaGuid is not a supported schema by the 'Microsoft.Jet.OLEDB.4.0' provider.
private Nachricht | Beiträge des Benutzers
CB.NET
myCSharp.de - Member

Avatar #avatar-2838.gif


Dabei seit:
Beiträge: 729
Herkunft: bei Berlin

beantworten | zitieren | melden

eine Möglichkeit , mit NET Access-Tabellen zu listen, wäre folgende:

http://groups.google.de/group/microsoft.public.de.german.entwickler.dotnet.datenbank/browse_thread/thread/7816bce12bab16dc/56d4369c7d62aec3?lnk=st&q=access+tabellen+c%23&rnum=19&hl=de#56d4369c7d62aec3
--------------------------------
DotNetGerman Bloggers
private Nachricht | Beiträge des Benutzers
Scarface
myCSharp.de - Member



Dabei seit:
Beiträge: 186
Herkunft: Baden-Württemberg

Themenstarter:

beantworten | zitieren | melden

So ähnlich hatte ich das ja auch. Hab's jetzt mal so wie in dem Bsp probiert. Geht aber leider auch nicht. Selber Fehler.
private Nachricht | Beiträge des Benutzers
cypher
myCSharp.de - Member

Avatar #avatar-2016.jpg


Dabei seit:
Beiträge: 22
Herkunft: NRW

beantworten | zitieren | melden

Du musst ADOX benutzen , dann geht es relativ einfach

ADOX.Catalog catalog = new ADOX.Catalog();
ADODB.Connection conn = new ADODB.Connection();
conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\testdb.mdb";
conn.Open(null,null,null,0);

listBox1.Items.Clear();
catalog.ActiveConnection = conn;

for (int i = 0; i < catalog.Views.Count; i++)
{
listBox1.Items.Add(catalog.Views[i].Name);[/i]
listBox1.Items.Add(" Erstellt am: " + catalog.Views[i].DateCreated);[/i]
listBox1.Items.Add(" Änderung am: " + catalog.Views[i].DateModified);[/i]
listBox1.Items.Add(" SQL : " + (catalog.Views[i].Command as ADODB.Command).CommandText);[/i]
for (int j = 0; j < (catalog.Views[i].Command as ADODB.Command).Properties.Count; j++)[/i]
{
try
{
listBox1.Items.Add(" Property (" + (catalog.Views[i].Command as ADODB.Command).Properties[j].Name + ";) : " + [/i]
(catalog.Views[i].Command as ADODB.Command).Properties[j].Value.ToString());}[/i]
catch {}
}
}
}


Bis denn

Cypher
C# Padawan
private Nachricht | Beiträge des Benutzers
Noodles
myCSharp.de - Experte



Dabei seit:
Beiträge: 4802
Herkunft: Leipzig

beantworten | zitieren | melden

Das muss er nicht benutzen.

OleDbConnection conn = new OleDbConnection(connectionString);
conn.Open();
DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] {null, null, null, "TABLE"});
conn.Close();

Da halte ich diese Version doch um einiges einfacher.
private Nachricht | Beiträge des Benutzers
cypher
myCSharp.de - Member

Avatar #avatar-2016.jpg


Dabei seit:
Beiträge: 22
Herkunft: NRW

beantworten | zitieren | melden

Da muss ich dir recht geben

Ist echt einfacher ;-)

Bis denn

Cypher
C# Padawan
private Nachricht | Beiträge des Benutzers
Scarface
myCSharp.de - Member



Dabei seit:
Beiträge: 186
Herkunft: Baden-Württemberg

Themenstarter:

beantworten | zitieren | melden

Ja, funktioniert. Danke.

Mein Fehler lag bei dem Guid ( con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables...)
private Nachricht | Beiträge des Benutzers