O'Reilly logo

ADO.NET Cookbook by Bill Hamilton

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

10.14. Listing Tables in an Access Database

Problem

You need a list of all tables in your Access database.

Solution

Use the GetOLEDBSchemaTable( ) method of the OleDbConnection class or use ADOX through COM interop.

The first technique uses the GetOLEDBSchemaTable( ) method to return schema information about user tables. These results are then displayed.

For the second technique, you’ll need a reference to the Primary Interop Assembly (PIA) for ADO provided in the file ADODB.DLL; select adodb from the .NET tab in Visual Studio .NET’s Add Reference Dialog. You’ll also need a reference to Microsoft ADO Ext. 2.7 for DDL and Security from the COM tab in Visual Studio .NET’s Add Reference Dialog.

The second technique creates an ADOX Catalog object through COM interop. The Tables property of this object accesses the collection of tables from which the name and other information are displayed.

The C# code is shown in Example 10-14.

Example 10-14. File: ListAccessTablesForm.cs

// Namespaces, variables, and constants
using System;
using System.Configuration;
using System.Text;
using System.Data;
using System.Data.OleDb;

//  . . . 

// OLE DB StringBuilder result = new StringBuilder( ); // Open the OLE DB connection. OleDbConnection conn = new OleDbConnection( ConfigurationSettings.AppSettings["MsAccess_ConnectString"]); conn.Open( ); // Retrieve schema information for all tables. DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] {null, null, null, "TABLE"}); ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required