2009-11-09 24 views
11

Jeśli mogę otworzyć połączenie z plikiem MS Access w języku C#, jak mogę pobrać listę różnych tabel, które istnieją w Access DB (i jeśli to możliwe, dowolne metadane związane z tabelami)?Pobieranie listy tabel w pliku MS Access

+0

Co metadanych jesteś w potrzebie wiedząc o? –

+0

Przynajmniej opis tabeli (jeśli jest zapisany) –

+0

możliwy duplikat [Jak mogę uzyskać listę tabel w bazie danych Access (Jet)?] (Http://stackoverflow.com/questions/ 6152545/how-can-i-get-a-list-of-tables-in-an-access-access-jet-database) – Fionnuala

Odpowiedz

25

Właśnie znalazłem następujące rozwiązanie z 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

Każda pomoc w znalezieniu największej liczby w danej kolumnie? Korzystanie z C# – gsvirdi

1

Oto kilka linków:

Oto VB.NET snipit uzyskać wszystkie kolumny z tabeli programu Access, wiem, że to nie jest dokładnie to, czego” Ponownie szukają, ale podobne jabłka z podstawą, gdy lista wszystkich tabel:

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() 
Powiązane problemy