Microsoft ActiveX Data Objects Extensions for Data Definition Language and Security (ADOX) is an extension to ADO that provides an object model to manipulate data definition and security.
You can use ADOX in managed code in a similar way that you used an ADO recordset in the previous section. Just add a reference to ADOX type library using VS .NET's Add Reference option and use the namespace and its members as you would in unmanaged code.
To test this, create a new Windows application. After that, add a reference to the Microsoft ADO Ext. 2.7 for DLL and Security component to the project (see Figure 20-4).
Figure 20-4: Adding a reference to ADOX library
After adding the reference, you'll see that the ADOX namespace is listed in the available namespaces in your application (see Figure 20-5).
Figure 20-5: ADOX namespace listed in project references
Now, the only thing you need to do is to use the namespace and its members. The ADOX classes should be available in your application after adding Imports ADOX to the project. ADOX provides objects that you can use to create databases, tables, and columns. The Catalog object represents a database and its Create method creates a new database. The Table object represents a database table. You can add columns to a Table object using the Columns collection's Append method. Listing 20-2 creates a new Microsoft Access database called Test.mdb with the table MyTable and two columns, col1 and col2, in it.
Listing 20-2: Using ADOX from Managed Code
Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load ' Create SQL and Connection strings Dim ConnectionString As String = _ "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\\Test.mdb" Try ' Create a Catalog object Dim ct As Catalog = New Catalog() ct.Create(ConnectionString) ' Create a table and two columns Dim dt As Table = New Table() dt.Name = "MyTable" dt.Columns.Append("col1", DataTypeEnum.adInteger, 4) dt.Columns.Append("col2", DataTypeEnum.adVarWChar, 255) ' Add table to the tables collection ct.Tables.Append(CType(dt, Object)) Catch exp As Exception MessageBox.Show(exp.Message.ToString()) End Try End Sub