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
11
A
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:
- Displaying Tables of An Access Database Through C#
- Walkthrough: Editing an Access Database with ADO.NET
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()
les métadonnées êtes-vous besoin de savoir au sujet? –
À tout le moins, la description de la table (si une est enregistrée) –
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