首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

压缩Access数据库的有关问题(C#)

2011-12-22 
压缩Access数据库的问题(C#)用程序压缩Access数据库,用的方法是:object[]oParams//createaninctanceofaJe

压缩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

热点排行