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进行压缩的重要性。
建议压缩前先对数据库进行备份。

(0)

相关推荐

  • asp.net中调用winrar实现压缩解压缩的代码

    asp.net压缩文件夹调用示例:rar("e:/www.jb51.net/", "e:/www.jb51.net.rar"); asp.net解压缩rar文件调用示例:unrar("e:/www.jb51.net.rar", "e:/"); 复制代码 代码如下: using System; using System.Collections.Generic; using System.Text; using System.Di

  • asp.net SharpZipLib的压缩与解压问题

    我使用SharpZipLib.dll中遇到的问题是:利用SharpZipLib压缩后生成的*.rar文件,利用其可以正常解压,但如果使用文件右击压缩生成的*.RAR文件,在解压过程中出错,具体报错信息:Wrong Local header signature: 0x21726152 ;但*.zip文件可正常解压. 具体压缩.解压代码实现参照网络上的代码,贴出概要代码: 复制代码 代码如下: /// <summary> /// 压缩文件 /// </summary> /// <

  • 用ASP.Net实现文件的在线压缩和解压缩

    我们经常会遇到批量上传的问题,也会遇到将某个目录下所有文件都上传到服务器上的问题.那么,如何解决此类问题呢?以前的技术一般采用ActiveX等方式,这里笔者采用SharpZlib来实现,听说VS2005已有压缩和解压缩的解决方案,笔者还没有时间用VS2005,所以就只好使用VS2003 + SharpZlib来解决问题了. 1.首先从这里下载0.84版本的SharpZlib源码及示例码. 2.下载下来之后你发现它没有VS2003的解决方案文件,没有关系.你可以自己建立,首先新建一个ZipUnzi

  • c#调用winrar解压缩文件代码分享

    复制代码 代码如下: using Microsoft.Win32;using System.Diagnostics;压缩string the_rar;RegistryKey the_Reg;object the_Obj;string the_Info;ProcessStartInfo the_StartInfo;Process the_Process;try{the_Reg = Registry.ClassesRoot.OpenSubKey(@"Applications\WinRAR.exe\S

  • C#使用iCSharpcode进行文件压缩实现方法

    本文所述为一个C#使用iCSharpcode压缩的使用类,经测试效果不错.分享给大家供大家参考之用.具体方法如下: 1.参数类 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ZipCompress { public class ZipParameter { private string zip_Name = ""; private strin

  • ASP.NET页面进行GZIP压缩优化的几款压缩模块的使用简介及应用测试!(附源码)第1/2页

    在介绍之前,先简单说一说ASP.NET服务端GZIP压缩模块的作用及工作原理,很多人编写网页的时候页面因为使用了大量的JS特效又或者放置很多大型动态广告导致了页面或脚本体积庞大,通常都会使用一些压缩工具本地对页面或脚本进行一定的压缩后再上传到服务器,但这样的压缩工具一般压缩率有限,优化自然也不明显,本文章介绍的压缩模块的作用就是对asp.net的页面或脚本等资源进行高强度GZIP压缩(一般能压缩到只有1/5的体积),而且压缩的过程是发生在客户端请求aspx页面的时候由服务端进行压缩处理后再传送给

  • C#实现GZip压缩和解压缩入门实例

    主要是因为GZipStream的构造函数中第一个需要传入一个Stream,第二个是指定操作方式:压缩还是解压缩. 当时的疑问点主要有: 1.我传入的Stream是包含未压缩数据的Stream吗?2.我解压时是从一个压缩流中读取数据后再用GZipStream解压吗? 出现以上两点疑问,完全是我将GZipStream的用法理解反了. 其实GZipStream里面存的是已经压缩过的数据流,传入的Stream是作为基础Stream传入,如果要压缩,那你就可以传一个空的Stream进去,如果要解压,就将包

  • asp.net C#实现解压缩文件的方法

    本文实例讲述了asp.net C#实现解压缩文件的方法.一共给大家介绍了三段代码,一个是简单的解压缩单个zip文件,后一个可以解压批量的大量的但需要调用ICSharpCode.SharpZipLib.dll类了,最后一个比较实例可压缩也可以解压缩了分享给大家供大家参考.具体如下: 解压缩单个文件: 复制代码 代码如下: using System.IO; using System.IO.Compression; string sourceFile=@"D:2.zip"; string d

  • asp.net输出重写压缩页面文件实例代码

    例子 复制代码 代码如下: using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.htmlControls;using Sys

  • asp.net 图片超过指定大小后等比例压缩图片的方法

    复制代码 代码如下: /// <summary>        /// 压缩图片        /// </summary>        /// <returns></returns>        public string ResizePic()        {            #region 压缩图片开始            bool IsImgFile = true;  //判断是否为图片文件            string file

  • 基于Asp.Net MVC4 Bundle捆绑压缩技术的介绍

    很高兴,最近项目用到了Asp.Net MVC4 + Entity Framework5,发现mvc4加入了Bundle.Web API等技术,着实让我兴奋,以前是用第三方的,这里主要说说Bundle技术. 很多大网站都没有用Bundle技术造成很多资源浪费与性能的牺牲,别小瞧 用上了你会发现他的好处: 将多个请求捆绑为一个请求,减少服务器请求数 没有使用Bundle技术,debug下看到的是实际的请求数与路径 使用Bundle技术,并且拥有缓存功能调试设置为Release模式并按F5或修改web

随机推荐