C#中使用晚绑定实现压缩Access数据库.
VB对Com后期绑定支持得很好,在C#中可以使用反射来实现.
函数实现代码如下:
publicstaticvoidCompactAccessDB(stringstrMdbName)
...{
stringTempMdbName=Application.StartupPath+@"Temp.mdb";
//创建Jet引擎对象
objectobjJetEngine=Activator.CreateInstance(Type.GetTypeFromProgID("JRO.JetEngine"));
//设置参数数组
//根据你所使用的Access版本修改"JetOLEDB:EngineType=5"中的数字.
//5对应JET4X格式(access2000,2002)
object[]objParams=newobject[]...{
String.Format("Provider=Microsoft.Jet.OLEDB.4.0;DataSource={0}",strMdbName),//输入连接字符串
String.Format("Provider=Microsoft.Jet.OLEDB.4.0;DataSource={0};JetOLEDB:EngineType=5",TempMdbName)//输出连接字符串
};
//通过反射调用CompactDatabase方法
objJetEngine.GetType().InvokeMember("CompactDatabase",
System.Reflection.BindingFlags.InvokeMethod,
null,
objJetEngine,
objParams);
//删除原数据库文件
System.IO.File.Delete(strMdbName);
//重命名压缩后的数据库文件
System.IO.File.Move(TempMdbName,strMdbName);
//释放Com组件
System.Runtime.InteropServices.Marshal.ReleaseComObject(objJetEngine);
objJetEngine=null;
}
为什么要使用晚绑定呢?可以直接在项目中添加对 JRO.JetEngine 组件的引用来实现的.
在多人协作的开发环境中,添加引用需要签出项目文件进行修改.如果有组员机器上没有这个组件,她就会无法编译改动后程序.
这种方式就很方便,复制过去就能用.不需要对项目进行修改.
虽然晚绑定有小小性能损失,换来的方便性还是划算的. 而且也不是经常会用到这个功能.
对于有密码的access文件怎么处理呢?
很简单的,就是在输入连接字符串中增加密码的设置即可.
这样默认压缩后的mdb就没有密码,如果希望压缩后的mdb也有密码,就在输出的连接字符串里面增加密码设置即可.
这个方法其实也可以用来修改mdb的密码,取消mdb密码,给mdb设置密码.
分享到:
相关推荐
C# 使用晚绑定实现压缩Access数据库
主要介绍了C#使用晚绑定来实现压缩Access数据库的方法,项目开发中有一定的实用价值,需要的朋友可以参考下
103 <br>0167 锁定文本框内的文本 103 <br>0168 使用Message.Show输出用户信息 104 <br>5.3 图片数据处理技巧 104 <br>0169 如何将图片存入数据库 104 <br>0170 如何将图片从数据库中读取...
实例148 在水晶报表中使用公式字段 260 实例149 设计分组统计报表 261 实例150 打印一个空学生证 264 实例151 自定义横向或纵向打印 266 实例152 自定义打印页码范围 268 第14章 文件及数据流技术 271 实例153 根据...
实例050 设置货币值中使用的小数位数 64 实例051 格式化输入数据为货币格式 65 实例052 开发一个进制转换器 66 3.4 日期时间格式的数据处理 67 实例053 动态获得系统当前日期和时间 67 实例054 手动设置系统日期时间...
ACCESS数据库操作类.txt ASP.NET常用代码.txt asp.net常用函数表.txt Asp.net的身份验证.txt ASP导出Excel数据的四种方法.txt C#调用存储过程.txt CheckBox控件.txt datagrid排序_选择_分页.txt DataSet...
在 SQL Server 2005 中使用表值函数来实现空间数据库 SQL Server 2005的30个最重要特点 同时安装sql2000和sql2005的经验 类如何与界面绑定 在Asp.net中如何用SQLDMO来获取SQL Server中的对象信息 使用Relations建立...
ACCESS数据库操作类.txt ASP.NET常用代码.txt asp.net常用函数表.txt Asp.net的身份验证.txt ASP导出Excel数据的四种方法.txt C#调用存储过程.txt CheckBox控件.txt datagrid排序_选择_分页.txt DataSet...
SQLite 是一款轻型的数据库 是遵守ACID的关联式数据库管理系统 它的设计目标是嵌入式的 而且目前已经在很多嵌入式产品中使用了它 它占用资源非常的低 在嵌入式设备中 可能只需要几百K的内存就够了 它能够支持Windows...
SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。...
-Grid的BoundField增加NullDisplayText属性,用于处理数据库中的null值,如果没有设置则默认为空字符串。 -修正DatePicker中的一个bug(31/01/2010将会返回NULL)使用DateFormatString来生成SelectedDate属性...
语言为.NET网站中使用的语言,如果选择Visual C#,则默认的开发语言为C#,否则为Visual Basic。创建了ASP.NET网站后,系统会自动创建一个代码隐藏页模型页面Default.aspx。ASP.NET网页一般由三部分组成,这三个部分...