10.10. Compacting an Access Database

Problem

You need to compact or repair an Access database.

Solution

Use COM interop to the compact the Access database using JRO, or the Process.Start( ) method to compact the database using a command line switch.

You’ll need a reference to the Microsoft Jet and Replication Objects 2.6 Library from the COM tab in Visual Studio .NET’s Add Reference Dialog.

The sample code contains one event handler and a single method:

Compact Button.Click

Allows the user to specify the Access database to compact and the filename for the compacted Access database. It then calls the CompactAccessDatabase( ) method in the sample to compact the database.

CompactAccessDatabase( )

This method uses ADOX through COM interop to compact the specified Access database to the specified location.

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

Example 10-10. File: CompactAccessForm.cs

// Namespaces, variables, and constants using System; using System.Windows.Forms; // . . . private void compactButton_Click(object sender, System.EventArgs e) { // Create the open file dialog object to get // the Access database to compact. OpenFileDialog ofd = new OpenFileDialog( ); ofd.InitialDirectory = System.IO.Path.GetTempPath( ); // Set the filter for Access databases. ofd.Filter = "Microsoft Access (*.mdb)|*.mdb"; // Open the dialog. if (ofd.ShowDialog( ) != DialogResult.OK) // Return, if not user is not OK. return; String sourceFileName = ofd.FileName; // Create the save file dialog object to get // the ...

Get ADO.NET Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.