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.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 ...

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