动态创建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);
    }

posted @ 2014-01-13 06:42  thxjcy  阅读(233)  评论(0编辑  收藏  举报