扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
winrar有预定义的指令的,比如下面的vb代码把文件压缩: mystr = "C:\Program Files\WinRAR\WinRAR.exe"
专注于为中小企业提供网站建设、成都网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业滨海免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了近1000家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
Source = "d:\1.txt" '源文件的位置
Target = "d:\" '存放压缩文件的位置
mystr = mystr " a " Target " " Source
'调用RAR文件压缩
retval = Shell(mystr, vbHide)
MsgBox "文件压缩成功完成!", 64, "提示信息"解压文件也类似,可以去找下winrar的一些说明,它自己有命令行的,调用就行,解压好像是-inul,不太记得了。上面的代码可以进行压缩。
如果机器安装有winRar软件,就可以通过shell来借用他的功能达到压缩文件的效果;
参考代码如下:
Dim DeliveryF As String = Server.MapPath("..\Temp\DeliveryFactors.xls") '原始文件 (压缩前)
Dim TruckInfo As String = Server.MapPath("..\Temp\TruckInformation.xls")
Dim QDetail As String = Server.MapPath("..\Temp\QuotationDetail.xls")
'用shell命令调用winrar.exe创建压缩文件()
Dim winRarexe As String = "C:\Program Files\WinRAR\Rar" 'winzip 执行文件的位置
Dim wtarget As String = "C:\temp\QuotationVAComparsion.zip" '目地文件 (压缩后)
Dim command As String = winRarexe " a " wtarget " " DeliveryF " " TruckInfo " " QDetail
'这个命令你可以查看winrar的命令集
Dim retval As Double 'Shell 指令传回值
retval = Shell(command, AppWinStyle.MinimizedFocus)
using System;
using System.Data;
using System.Configuration;
using System.Collections;
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 System.IO;
using System.Text;
using _5dRss.Const;
using _5dRss.lib.Data.Tool;
public partial class admin_admin_dbmanage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//生成备份文件列表
ListBackupFiles();
if (!Page.IsPostBack)
{
Showmsg.Visible = false;
//数据库路径
lilDBPath.Text = HttpContext.Current.Request.PhysicalApplicationPath + "App_Data\\" + ConfigurationSettings.AppSettings["DBFile"];
//新建一个 FileInfo 对象,并获得数据库文件的大小,然后转换单位为KB
FileInfo myFileInfo = new FileInfo(lilDBPath.Text);
lilDBSize.Text = Convert.ToString(myFileInfo.Length/1024) + " KB";
//如果两个参数都不为空,则继续执行
if (Request.QueryString["cmd"] != null Request.QueryString["source"] != null)
{
//备份数据库原文件名
string sourceFileName = Request.QueryString["source"];
//如果 cmd 参数为 DelFile
if (Request.QueryString["cmd"].Equals("DelFile"))
{
//删除备份数据库文件
File.Delete(HttpContext.Current.Request.PhysicalApplicationPath + "Backup\\" + sourceFileName);
//刷新备份文件列表
ListBackupFiles();
Showmsg.Visible = true;
Showmsg.Text = "div align='center' style='margin-bottom:8px;'img src='images/aL.gif' style='margin-bottom:-6px;'/span class='alertTxt'删除备份数据库成功!/spanimg src='images/aR.gif' style='margin-bottom:-6px;'//div";
}
//如果 cmd 参数为 Restore
if (Request.QueryString["cmd"].Equals("Restore"))
{
//用备份文件覆盖原文件
File.Copy(HttpContext.Current.Request.PhysicalApplicationPath + "Backup\\" + sourceFileName, HttpContext.Current.Request.PhysicalApplicationPath + "App_Data\\" + ConfigurationSettings.AppSettings["DBFile"], true);
//刷新备份文件列表
ListBackupFiles();
Showmsg.Visible = true;
Showmsg.Text = "div align='center' style='margin-bottom:8px;'img src='images/aL.gif' style='margin-bottom:-6px;'/span class='alertTxt'还原备份数据库成功!/spanimg src='images/aR.gif' style='margin-bottom:-6px;'//div";
}
}
}
}
protected void lnkbtnCompactDB_Click(object sender, EventArgs e)
{
//压缩修复数据库
AccessDBtool.CompactAccessDB(SysConfig.ConnectionString, HttpContext.Current.Request.PhysicalApplicationPath + "App_Data\\" + ConfigurationSettings.AppSettings["DBFile"]);
Showmsg.Visible = true;
Showmsg.Text = "div align='center' style='margin-bottom:8px;'img src='images/aL.gif' style='margin-bottom:-6px;'/span class='alertTxt'压缩修复数据库成功!/spanimg src='images/aR.gif' style='margin-bottom:-6px;'//div";
}
protected void lnkbtnBackupDB_Click(object sender, EventArgs e)
{
string sourceFileName = HttpContext.Current.Request.PhysicalApplicationPath + "App_Data\\" + ConfigurationSettings.AppSettings["DBFile"];
string destFileName = HttpContext.Current.Request.PhysicalApplicationPath + "Backup\\" + "Backup_";
destFileName += DateTime.Now.ToString("yyyyMMddHHmmss");
destFileName += ".mbk";
//将数据库文件Copy到Backup目录,如果有重名文件就覆盖原文件
File.Copy(sourceFileName, destFileName, true);
//生成备份文件列表
ListBackupFiles();
Showmsg.Visible = true;
Showmsg.Text = "div align='center' style='margin-bottom:8px;'img src='images/aL.gif' style='margin-bottom:-6px;'/span class='alertTxt'备份数据库成功!/spanimg src='images/aR.gif' style='margin-bottom:-6px;'//div";
}
/// summary
/// 生成备份文件列表
/// /summary
/// returns文件列表,文件详细信息及操作选项的HTML代码/returns
public void ListBackupFiles()
{
//如果目录不存在则创建次目录
if (!Directory.Exists(HttpContext.Current.Request.PhysicalApplicationPath + "Backup\\"))
Directory.CreateDirectory(HttpContext.Current.Request.PhysicalApplicationPath + "Backup\\");
DirectoryInfo mydir = new DirectoryInfo(HttpContext.Current.Request.PhysicalApplicationPath + "Backup\\");
StringBuilder sb = new StringBuilder();
foreach (FileInfo f in mydir.GetFiles())
{
sb.Append("a href='backup/" + f.Name + "' target='_blank'img border='0' src='images/mdb.gif' style='margin:4px 3px -3px 0px'/" + f.Name + "/a a href='?cmd=DelFilesource=" + f.Name + "' title='删除备份文件'删除/a | a href='?cmd=Restoresource=" + f.Name + "' title='删除备份文件'还原数据库/a | " + f.Length/1024 + " KB | " + f.CreationTime + "br /");
}
lilBackupFileList.Text = sb.ToString();
}
}
把下面这句换成你的数据库地址:
//数据库路径
// lilDBPath.Text = HttpContext.Current.Request.PhysicalApplicationPath + "App_Data\\" + ConfigurationSettings.AppSettings["DBFile"];
以前使用
DAO
时,Microsoft
有提供
CompactDatabase
Method
来压缩
Microsoft
Access
文件,RepairDatabase
Method
来修复损坏的
Microsoft
Access
文件,。可是自从
ADO
出来之后,好像忘了提供相对的压缩及修复
Microsoft
Access
文件的功能。
现在
Microsoft
发现了这个问题了,也提供了解决方法,不过有版本上的限制!限制说明如下:
ActiveX
Data
Objects
(ADO),
version
2.1
Microsoft
OLE
DB
Provider
for
Jet,
version
4.0
这是
Microsoft
提出的
ADO
的延伸功能:Microsoft
Jet
OLE
DB
Provider
and
Replication
Objects
(JRO)
这个功能在
JET
OLE
DB
Provider
version
4.0
(Msjetoledb40.dll)
及
JRO
version
2.1
(Msjro.dll)
中第一次被提出!
这些必要的
DLL
文件在您安装了
MDAC
2.1
之后就有了,您可以在以下的网页中下载
MDAC
的最新版本!
Universal
Data
Access
Web
Site
在下载之前先到
VB6
中检查一下,【控件】【设定引用项目】中的
Microsoft
Jet
and
Replication
Objects
X.X
library
如果已经是
2.1
以上的版本,您就可以不用下载了!
1、新建一个新表单,选择功能表中的【控件】【设定引用项目】。
2、加入
Microsoft
Jet
and
Replication
Objects
X.X
library,其中
(
X.X
大于或等于
2.1
)。
3、在适当的地方加入以下的程序代码,记得要修改
data
source
的内容及目地文件的路径:
Dim
jro
As
jro.JetEngine
Set
jro
=
New
jro.JetEngine
jro.CompactDatabase
"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=d:\
wind2.mdb",
_
'来源文件
在
DAO
3.60
之后,RepairDatabase
Method
已经无法使用了,以上的程序代码显示了
ADO
CompactDatabase
Method
的用法,而它也取代了
DAO
3.5
时的
RepairDatabase
method!
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流