zoukankan      html  css  js  c++  java
  • Asp.net在线备份、压缩和修复Access数据库

    1.问题的提出

    在设计中小型Web应用程序时,可以选择Microsoft Accesss为数据库。在数据库的使用过程中经常性进行增加和删除操作。事实上,Microsoft Access并不能有效地释放已分配的但被删除的对象空间,这将意味着即使你删除了一个对象,而这个对象仍然占据着数据库的空间,使得数据库越来越大。不 但占用不必要的空间,而且降低了数据库的效率。特别在虚拟站点上的问题尤为突出。因此对Access数据库进行压缩瘦身很有实际意义。
    虽然Access数据库自身具有“压缩和修复数据库”功能(工具è数据库实用工具è压缩和修复数据库)。但对一般使用者来说操作不方便。通常Accesss数据库放置在虚拟主机上,需要把它下载下来“压缩修复”完后再传上去很浪费时间,所以最好能在线对数据库进行压缩。

    2.在线压缩数据库的实现

    2.1.添加引用

    在VS.Net环境的解决方案下添加引用。方法如下:项目→添加引用→选项卡→浏览(c:"program files"comm files"System"ado"msjro.dll)。

    2.2.创建Web应用程序窗体

    在Web窗体(DataBase.aspx)上放置一个按钮:
    <asp:Button ID="CompactBtn" runat="server" Text=" 压缩数据库 " OnClick="CompactBtn_Click" />
    再添加一个Label控件:
    <asp:Label ID="MsgLabel" runat="server"></asp:Label>

    2.3.代码状态下,添加引用

    using System;
    using System.IO;
    using JRO;

    2.4.添加代码

    //压缩数据库
    protected void CompactBtn_Click(object sender, EventArgs e)
    {
     string DbPath1, DbPath2, DbConn1, DbConn2;

     DbPath1 = Server.MapPath("../App_Data/DataBase.mdb");//原数据库路径
     DbPath2 = Server.MapPath("../App_Data/DataBase2.mdb");//压缩后的数据库路径
     DbConn1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + DbPath1;
     DbConn2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + DbPath2;

     try
     {
      JetEngine DatabaseEngin = new JetEngine();
      DatabaseEngin.CompactDatabase(DbConn1, DbConn2);//压缩

      File.Copy(DbPath2, DbPath1, true);//将压缩后的数据库覆盖原数据库
      File.Delete(DbPath2);//删除压缩后的数据库

      MsgLabel.Text = "数据库压缩成功!";
     }
     catch
     {
      MsgLabel.Text = "数据库压缩失败,请重试!";
     }
    }

    3.备份数据库

    3.1.创建Web应用程序窗体

    在Web窗体(DataBase2.aspx)上放置一个按钮:
    <asp:Button ID="BackUpBtn" runat="server" Text=" 备份数据库 " OnClick="BackUpBtn_Click" />
    再添加一个Label控件:
    <asp:Label ID="MsgLabel" runat="server"></asp:Label>

    3.2.代码状态下,添加引用

    using System;
    using System.IO;

    3.3.添加代码

    //备份数据库
    protected void BackUpBtn_Click(object sender, EventArgs e)
    {
     string DbPath1, DbPath2, DbName4DbPath2;

     DbName4DbPath2 = DateTime.Now.ToString().Replace(":",".");
     DbPath1 = Server.MapPath("../App_Data/DataBase.mdb");
     DbPath2 = Server.MapPath("../App_Data/" + DbName4DbPath2 + ".mdb");

     try
     {
      File.Copy(DbPath1, DbPath2, true);

      MsgLabel.Text = "数据库备份成功到" + DbName4DbPath2 + ".mdb!";
     }
     catch
     {
      MsgLabel.Text = "数据库备份失败,请重试!";
      MsgLabel.CssClass = "redColor";
     }
    }

    4.总结

    经过压缩使Microsoft Access真正释放占据的多余空间,数据库尽量减小,保证它最有效地运行。因此,在设计的过程中,不可忽视对Microsoft Access进行压缩的重要性。
    建议压缩前先对数据库进行备份。

  • 相关阅读:
    leetcode 86. Partition List
    leetcode 303. Range Sum Query
    leetcode 1310. XOR Queries of a Subarray
    leetcode 1309. Decrypt String from Alphabet to Integer Mapping
    leetcode 215. Kth Largest Element in an Array
    将numpy.ndarray写入excel
    leetcode 1021 Remove Outermost Parentheses
    leetcode 1306. Jump Game III
    leetcode 1305. All Elements in Two Binary Search Trees
    ICCV2019 oral:Wavelet Domain Style Transfer for an Effective Perception-distortion Tradeoff in Single Image Super-Resolution
  • 原文地址:https://www.cnblogs.com/leeolevis/p/1383178.html
Copyright © 2011-2022 走看看