- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
价值的创造与实现TManagedDataSet和
价值的创造与实现:TManagedDataSet和
DataSetPool的实现
疯狂代码 http://CrazyC/ ĵ http:/CrazyC/Delphi/Article45197.html
; ; ; ; ; ; ; ; ;Delphi中使用最多大概是AdoExpress组件这是Borland封装了MicrosoftAdo东东使用频率最
多TAdoDataSet对应了Ado原生RecordSet在功能上做了些增强但使用方法基本致用多了就感觉
TAdoDataSet还有扩充和改造地方
; ; ; ; ; ; ; ; ;由于代码中使用了很多TAdoDataSetControl控件创建和释放对象非常频繁而且每次创建后都要设置
很多基本相同属性颇为麻烦于是想到可以实现个记录集池每次当需要个记录集时从这个池中得到个空闲且符合
要求(只读或可读写)用完了就被池回收如果池中记录集不够就自动生成新记录集对象
; ; ; ; ; ; ; ; ;首先要做是改造TAdoDataSet我写了个TManagedDataSet继承自TAdoDataSet可以自己知道自己
是被人使用还是空闲(通过IsUsed)重写了Free把本来释放动作改为仅是把自己设置为空闲并清除状态
(Session)信息并可以通过Source返回个指向自己TDataSource对象
; ; ; ; ; ; ; ; ;有了这些基础后就可以很快构建TDataSetPool类了这个类仅是保存可用TManagedDataSet对象通
过GetDataSet(WantType : TManagedDataSetType)返回个空闲数据集对象如果池中没有空闲就新建个返回
TManagedDataSetType是枚举类标识只读数据集和读写数据集(只读数据集可通过优化CursorType和
LockType来加快读数据速度)
; ; ; ; ; ; ; ; ;下面代码是直接从我做个项目源文件中Copy出来有些乱仅做参考
unit ManagedDataSet;
erface
uses AdoDb, CommonDm, SysUtils, DB, dbgrids, ComObj, es, contnrs;
type
; ; ; ; ; ; ; ; ;TManagedDataSetType = (ReadOnly, Editable); // 猅羭摸
; ; ; ;TXlsExpAdapter =
; ; ; ; ; ; ; ;private
; ; ; ; ; ; ; ; ; ; ;_sXlsCaption : ;
; ; ; ; ; ; ; ; ; ; ; ;_sXlsFileName : ;
; ; ; ; ; ; ; ; ; ; ; ;_bOverwriteExistFile : Boolean;
; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;_asFieldName : TStringList;
; ; ; ; ; ; ; ; ; ; ; ;_asXlsTitle : TStringList;
; ; ; ; ; ; ; ; ; ; ; ;_aDataType : TObjectList;
; ; ; ; ; ; ; ; ; ; ; ;function GetDataType(const iniIndex : Integer) : TDataType;
; ; ; ; ; ; ; ; ; ; ; ;function GetFieldName(const iniIndex : Integer) : ;
; ; ; ; ; ; ; ; ; ; ; ;function GetXlsTitle(const iniIndex : Integer) : ;
; ; ; ; ; ; ; ;public
; ; ; ; ; ; ; ; ; ; ;constructor Create;
; ; ; ; ; ; ; ; ; ; ; ;destructor Destroy;
; ; ; ; ; ; ; ; ; ; ;property XlsCaption : read _sXlsCapt
您可能关注的文档
最近下载
- 通桥(2019)2131-Ⅲ 时速160km客货共线铁路简支箱梁(单线)跨度:23.5m(直、曲线).pdf
- 高一物理-折合质量法求解完全非弹性碰撞.pdf VIP
- 2023-2024学年北京北师大附中新高一分班考物理试题及答案.docx VIP
- “工人阶级重要论述”及“工会十八大精神”知识竞赛试题附答案.doc VIP
- 上海某温室大棚空调方案设计说明.pdf VIP
- 市政府办公楼扩建改造项目投资建设可行性研究报告.doc VIP
- 卫生间丙纶布防水施工方案.doc VIP
- 成都地铁基坑围护结构钢支撑的应力监测分析.pdf VIP
- 2024湖北农谷实业集团有限责任公司招聘试题及答案解析.docx
- 新生儿呼吸心跳骤停新生儿重度窒息死亡病例讨论记录模板.doc VIP
文档评论(0)