Access数据库压缩工具(c#,Winform) 含源码
源代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using MsJro;
namespace mdbCompress
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
///
/// 压缩/修复数据库
///
protected void CompressDb()
{
string StrConn1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + txtPath.Text;
string StrConn2 = StrConn1.ToLower().Replace(".mdb", "_temp.mdb");
string fileName1 = txtPath.Text.Substring(txtPath.Text.LastIndexOf("\\") + 1);
string fileName2 = fileName1.ToLower().Replace(".mdb", "_temp.mdb");
try
{
//先备份
File.Copy(fileName1, fileName1.ToLower().Replace(".mdb", "_bak.mdb"), true);
//开始压缩修复
JetEngine DatabaseEngin = new JetEngine();
DatabaseEngin.CompactDatabase(StrConn1, StrConn2);
//删除原来的Data.mdb,并将Data_temp.mdb更名为Data.mdb
File.Copy(fileName2, fileName1, true);
if (File.Exists(fileName2))
{
File.Delete(fileName2);
}
//删除备份
File.Delete(fileName1.ToLower().Replace(".mdb", "_bak.mdb"));
MessageBox.Show("压缩/修复数据库成功!");
}
catch
{
//恢复备份
File.Copy(fileName1.ToLower().Replace(".mdb", "_bak.mdb"), fileName1, true);
//删除备份文件
File.Delete(fileName1.ToLower().Replace(".mdb", "_bak.mdb"));
MessageBox.Show("压缩/修复数据库失败!");
}
}
private void btnSelPath_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK) {
txtPath.Text = openFileDialog1.FileName;
//string t = txtPath.Text;
//t = t.Substring(t.LastIndexOf("\\")+1);
//MessageBox.Show(t);
}
}
private void btnStart_Click(object sender, EventArgs e)
{
if (txtPath.Text == "")
{
MessageBox.Show("请先选择mdb文件路径");
txtPath.Focus();
return;
}
if (!File.Exists(txtPath.Text))
{
MessageBox.Show("该文件不存在");
txtPath.Focus();
return;
}
CompressDb();
}
}
}
工具下载见附件