`
ihuashao
  • 浏览: 4529075 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

C#中使用晚绑定实现压缩Access数据库

阅读更多
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数据库

    C#使用晚绑定来实现压缩Access数据库的方法

    主要介绍了C#使用晚绑定来实现压缩Access数据库的方法,项目开发中有一定的实用价值,需要的朋友可以参考下

    C#编程经验技巧宝典

    103 <br>0167 锁定文本框内的文本 103 <br>0168 使用Message.Show输出用户信息 104 <br>5.3 图片数据处理技巧 104 <br>0169 如何将图片存入数据库 104 <br>0170 如何将图片从数据库中读取...

    《C#经典编程220例》.(明日科技).【带书签】-共3部分

    实例148 在水晶报表中使用公式字段 260 实例149 设计分组统计报表 261 实例150 打印一个空学生证 264 实例151 自定义横向或纵向打印 266 实例152 自定义打印页码范围 268 第14章 文件及数据流技术 271 实例153 根据...

    C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载

    实例050 设置货币值中使用的小数位数 64 实例051 格式化输入数据为货币格式 65 实例052 开发一个进制转换器 66 3.4 日期时间格式的数据处理 67 实例053 动态获得系统当前日期和时间 67 实例054 手动设置系统日期时间...

    ASP升级.net资料大全(c#入门 语言规范 源码教程 学习笔记 技术资料 面试题 asp与.net代码生成器)

    ACCESS数据库操作类.txt ASP.NET常用代码.txt asp.net常用函数表.txt Asp.net的身份验证.txt ASP导出Excel数据的四种方法.txt C#调用存储过程.txt CheckBox控件.txt datagrid排序_选择_分页.txt DataSet...

    asp.net知识库

    在 SQL Server 2005 中使用表值函数来实现空间数据库 SQL Server 2005的30个最重要特点 同时安装sql2000和sql2005的经验 类如何与界面绑定 在Asp.net中如何用SQLDMO来获取SQL Server中的对象信息 使用Relations建立...

    .net技术资料大全(语言规范 源码教程 学习笔记 技术资料 .net代码生成器)

    ACCESS数据库操作类.txt ASP.NET常用代码.txt asp.net常用函数表.txt Asp.net的身份验证.txt ASP导出Excel数据的四种方法.txt C#调用存储过程.txt CheckBox控件.txt datagrid排序_选择_分页.txt DataSet...

    SqliteDev 384

    SQLite 是一款轻型的数据库 是遵守ACID的关联式数据库管理系统 它的设计目标是嵌入式的 而且目前已经在很多嵌入式产品中使用了它 它占用资源非常的低 在嵌入式设备中 可能只需要几百K的内存就够了 它能够支持Windows...

    SQLite(SqliteDev)

    SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。...

    ExtAspNet_v2.3.2_dll

    -Grid的BoundField增加NullDisplayText属性,用于处理数据库中的null值,如果没有设置则默认为空字符串。 -修正DatePicker中的一个bug(31/01/2010将会返回NULL)使用DateFormatString来生成SelectedDate属性...

    ASP.NET的网页代码模型及生命周期

    语言为.NET网站中使用的语言,如果选择Visual C#,则默认的开发语言为C#,否则为Visual Basic。创建了ASP.NET网站后,系统会自动创建一个代码隐藏页模型页面Default.aspx。ASP.NET网页一般由三部分组成,这三个部分...

Global site tag (gtag.js) - Google Analytics