压缩Access数据库的问题(C#)
用程序压缩Access数据库,用的方法是:
object[] oParams;
//create an inctance of a Jet Replication Object
object objJRO = Activator.CreateInstance(Type.GetTypeFromProgID( "JRO.JetEngine "));
//filling Parameters array
//cnahge "Jet OLEDB:Engine Type=5 " to an appropriate value
// or leave it as is if you db is JET4X format (access 2000,2002)
//(yes, jetengine5 is for JET4X, no misprint here)
oParams = new object[] {
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " + mdwfilename,
"Provider=Microsoft.Jet.OLEDB.4.0;Data " +
" Source=C:\\tempdb.mdb;Jet OLEDB:Engine Type=5 "};
//invoke a CompactDatabase method of a JRO object
//pass Parameters array
objJRO.GetType().InvokeMember( "CompactDatabase ",
System.Reflection.BindingFlags.InvokeMethod,
null,
objJRO,
oParams);
//database is compacted now
//to a new file C:\\tempdb.mdw
//let 's copy it over an old one and delete it
System.IO.File.Delete(mdwfilename);
System.IO.File.Move( "C:\\tempdb.mdb ", mdwfilename);
//clean up (just in case)
System.Runtime.InteropServices.Marshal.ReleaseComObject(objJRO);
objJRO = null;
为什么有的机器执行就没问题,有的机器在执行object objJRO = Activator.CreateInstance(Type.GetTypeFromProgID( "JRO.JetEngine "));
就报无法获取Type类型
[解决办法]
不行的机器上你装一下 MDAC_TYPE 2.8 试试.
[解决办法]
object objJRO = Activator.CreateInstance(Type.GetTypeFromProgID( "JRO.JetEngine "));
//filling Parameters array
//cnahge "Jet OLEDB:Engine Type=5 " to an appropriate value
// or leave it as is if you db is JET4X format (access 2000,2002)
//(yes, jetengine5 is for JET4X, no misprint here)
看看注释,应该是MDAC组件有问题了。重新装个新版本的试试,MDAC2.5或者MDAC2.81
[解决办法]
用sharpzip把文件压缩一下不行么
[解决办法]
为什么要用程序压缩呀,用一些压缩工具不可以吗?
[解决办法]
Pure C# MiniLZO port
使用miniLZO快速stream压缩
http://www.codeproject.com/cs/algorithms/managedlzo.asp