动态创建Access数据库和压缩Access数据库
在创建Access数据库和压缩数据库之前必须填加以下动态连接库msADOX.dll、msjro.dll且它们都是在系统盘的system/ado文件价下,然后必须引用以下命名空间
using ADOX; //该命名空间包含创建ACCESS的类(方法)using JRO; //该命名空间包含压缩ACCESS的类(方法)
创建Access数据库代码如下:
//DBPath是属于数据库的物理路径;
public static void CreateAccess(string DBPath)
{
if (File.Exists(DBPath))//检查数据库是否已存在
{
throw new Exception("目标数据库已存在,无法创建");
}
DBPath = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+DBPath;
//创建一个CatalogClass对象实例
ADOX.CatalogClass cat = new ADOX.CatalogClass();
//使用CatalogClass对象的Create方法创建ACCESS数据库
cat.Create(DBPath);
}
压缩数据库代码如下:
public static void Compact()
{
string mdbPath =""//添写数据库的物理路径
string temp2 = "";
string mdbPath2 = "";
if (!File.Exists(mdbPath)) //检查数据库是否已存在
{
throw new Exception("目标数据库不存在,无法压缩");
}
//声明临时数据库的名称
string temp = DateTime.Now.Year.ToString();
temp += DateTime.Now.Month.ToString();
temp += DateTime.Now.Day.ToString();
temp += DateTime.Now.Hour.ToString();
temp += DateTime.Now.Minute.ToString();
temp += DateTime.Now.Second.ToString() + ".bak";
temp = mdbPath.Substring(0, mdbPath.LastIndexOf("\\") + 1) + temp;
//定义临时数据库的连接字符串
temp2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + temp;
//定义目标数据库的连接字符串
mdbPath2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbPath;
//创建一个JetEngineClass对象的实例
JRO.JetEngineClass jt = new JRO.JetEngineClass();
//使用JetEngineClass对象的CompactDatabase方法压缩修复数据库
jt.CompactDatabase(mdbPath2, temp2);
//拷贝临时数据库到目标数据库(覆盖)
File.Copy(temp,mdbPath, true);
//最后删除临时数据库
File.Delete(temp);
}