C# 如何实现Access数据库文件(.accdb)的压缩和修复拜托各位大神

C# 如何实现Access数据库文件(.accdb)的压缩和修复拜托各位大神,第1张

C#压缩Access数据库 1、 /// <summary>/// connectionString 数据库连接字符串 /// mdwfilename 数据库绝对路径+数据库名 /// </summary>/// <param name="connectionString"></param>/// <param name="mdwfilename"></param>static void CompactAccessDB(string connectionString, string mdwfilename) { object[] oParamsobject objJRO = Activator.CreateInstance(Type.GetTypeFromProgID("JRO.JetEngine"))oParams = new object[] {connectionString, "Provider=Microsoft.Jet.OLEDB.4.0DataSource=C:\\temp.mdbJet OLEDB:Engine Type=5"}objJRO.GetType().InvokeMember("CompactDatabase",System.Reflection.BindingFlags.InvokeMethod, null,objJRO,oParams)System.IO.File.Delete(mdwfilename)System.IO.File.Move("C:\\temp.mdb", mdwfilename)System.Runtime.InteropServices.Marshal.ReleaseComObject(objJRO)objJRO = null} 2./// JetEngine x = new JetEngine()x.CompactDatabase(connectstring, "Provider=Microsoft.Jet.OLEDB.4.0Data Source=C:\\temp.mdbJet OLEDB:Engine Type=5User ID=AdminPassword=")//第二个参数是用来存放压缩后数据库的 System.IO.File.Delete(mdbfilename)System.IO.File.Move("C:\\temp.mdb", mdbfilename)/// 两种方法,第一种比较难理解,第二种添加dll,简单易用。我在程序中用的第一 种方法,避免了添加dll但是需要从数据库连接字符串里解析出mdwfilename。此 外,在调用上述方法前都得先关闭数据库连接,因为毕竟都得delete旧数据库的 。 另外,你可以参考 http://www.codeproject.com/KB/database/mdbcompact_latebind.aspx 或者到csdn里多问问。

#include "objbase.h" //牵涉到COM对象,必须包含此头文件

AnsiString srcmdb="c:\\test.mdb"//原文件名(压缩之前)

AnsiString destmdb="c:\\test2.mdb"//目标文件名(压缩之后)

CoInitialize(NULL)//初始化COM对象

AnsiString src = "Provider=Microsoft.Jet.OLEDB.4.0Data Source="+srcmdb//连接字串

AnsiString dest = "Provider=Microsoft.Jet.OLEDB.4.0Data Source="+destmdb

Variant AdoObj = Variant::CreateObject("JRO.JetEngine")

AdoObj.OleProcedure("CompactDatabase",src.c_str(),dest.c_str())

AdoObj.Clear()

CoUninitialize()

DeleteFile(srcmdb) //删除原文件,如果不放心可以不删除留个备份,但需要改名

RenameFile(destmdb,srcmdb)//将压缩后的文件改成原文件名

答:对于某些 *** 作,Access分配硬盘空间时存在一些问题,比如不自动收回已用的空间,这样就造成文件很大,这可能就是你提到的问题的原因。你可以使用菜单中的“工具(T)”|“数据库实用工具(D)”|“压缩和修复数据库(C)”(参见图1)。在有些情况下,这会产生意想不到的结果,我有一次将一个7MB的数据库文件压缩至了只有400KB。大多数情况下,这个技巧都非常可靠,不过我还是强烈建议在压缩之前还是要先备份一下原始数据。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9943908.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存