2009-11-09 7 views
11

Wenn ich eine Verbindung zu einer MS Access-Datei in C# öffnen kann, wie kann ich eine Liste der verschiedenen Tabellen, die in der Access DB (und wenn möglich, alle Metadaten mit den Tabellen verbunden)?Tabellenliste in MS Access-Datei abrufen

+0

Welche Metadaten sind Sie in der Notwendigkeit zu wissen? –

+0

Zumindest die Beschreibung der Tabelle (wenn eine gespeichert wird) –

+0

mögliche Duplikate von [Wie bekomme ich eine Liste von Tabellen in einer Access (Jet) -Datenbank?] (Http://stackoverflow.com/questions/ 6152545/how-can-i-get-a-Liste von Tabellen in einem Access-Jet-Datenbank) – Fionnuala

Antwort

25

Ich habe gerade die folgende Lösung von David Hayden

// Microsoft Access provider factory 
DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OleDb"); 

DataTable userTables = null; 
using (DbConnection connection = factory.CreateConnection()) { 
    // c:\test\test.mdb 
    connection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\test\\test.mdb"; 
    // We only want user tables, not system tables 
    string[] restrictions = new string[4]; 
    restrictions[3] = "Table"; 

    connection.Open(); 

    // Get list of user tables 
    userTables = connection.GetSchema("Tables", restrictions); 
} 

List<string> tableNames = new List<string>(); 
for (int i=0; i < userTables.Rows.Count; i++) 
    tableNames.Add(userTables.Rows[i][2].ToString()); 
+0

Hilfe bei der Suche nach der höchsten Nummer in einer bestimmten Spalte? Verwenden von C# – gsvirdi

1

Hier sind einige Links:

Hier ist ein VB.NET snipit alle Spalten einer Access-Tabelle zu bekommen, ich weiß, es ist nicht genau das, was Sie‘ Suche nach, aber ein ähnliches Prinzip Äpfel beim Auflisten aller Tabellen:

Dim oleConn As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & myDB & ";User Id=admin;Password=;") 

oleConn.Open() 
Dim schemaTable As DataTable 
Dim i As Integer 
schemaTable = oleConn.GetOleDbSchemaTable(OleDbSchemaGuid.Column s, _ 
New Object() {Nothing, Nothing, "tblTheTableToListColumns", Nothing}) 
For i = 0 To schemaTable.Columns.Count - 1 
Debug.Print(schemaTable.Rows(i)!COLUMN_NAME.ToStri ng) 
Next i 
oleConn.Close() 
Verwandte Themen