2009-11-09 7 views
11

Si je peux ouvrir une connexion à un fichier MS Access en C#, comment puis-je récupérer une liste des différentes tables qui existent dans la base de données Access (et, si possible, des métadonnées? associé aux tables)?Récupérer la liste des tables dans le fichier MS Access

+0

les métadonnées êtes-vous besoin de savoir au sujet? –

+0

À tout le moins, la description de la table (si une est enregistrée) –

+0

duplication possible de [Comment puis-je obtenir une liste de tables dans une base de données Access (Jet)?] (Http://stackoverflow.com/questions/ 6152545/how-i-get-a-list-of-tables-in-a-access-jet-database) – Fionnuala

Répondre

25

Je viens de trouver la solution suivante de 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

Une aide pour trouver le nombre le plus élevé dans une colonne particulière? En utilisant C# – gsvirdi

1

Voici quelques liens:

Voici un VB.NET snipit pour obtenir toutes les colonnes d'un tableau d'accès, je sais que ce n'est pas exactement ce que vous re à la recherche, mais une pomme primciple similaire lors de la liste de toutes les tables:

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() 
Questions connexes