数据离线模式(Disconnected Mode)是指数据库只有在需要的时候才连接,数据的处理放在客户端内存缓冲区中完成。这样做最大的好处是减少了网络资源依赖,对数据库服务器的资源开销和压力也减少。如果客户端需要经常反复地连接和关闭数据库连接,也可以采用ODAC的连接池模式。

要实现数据离线模式,需要完成以下几个步骤:

1、设置连接组件的选择项,将离线模式设为True,自动提交属性保持缺省值True,如下:

TCustomDAConnection.Options.DisconnectedMode := True;

TCustomDAConnection. AutoCommit := True;

此时数据库连接会在数据集进行数据获取、SQL执行等动作时自动开启,并在执行完成后自动关闭,所做的数据变更操作自动提交事务。

2、开启连接组件的连接池功能,将Pooling设置为True,如下:

TCustomDAConnection.Pooling := True;

3、可以设置数据集的参数,开启本地缓存,包括:

//启动本地缓存模式

TDataSet.CachedUpdates := True;

//一次性获取全部数据,对数据量大的表格慎用

TCustomDADataSet.FetchAll := True;

//开启主从关系的本地缓冲

TCustomDADataSet.Options.LocalMasterDetail := True;

//开启网络自动连接功能

TCustomDAConnection.Options.LocalFailover := True;

//批量提交数大于缺省值1,减少网络通信次数

TCustomDADataSet.Options.UpdateBatchSize := 10;

需要说明的有几点:

1、数据集的FetchAll为True时,会一次性获取全部数据,然后自动关闭连接,对已数据量少的表可以这样做,但是对于大数据量的表要慎重,或消耗较长时间。当FetchAll为False时,如果数据没有全部获取到本地,则连接不会关闭,连接会持续到所有数据均获取到本地后才自动关闭。

2、如果数据库连接手动显性开启了事务,则连接不会在SQL执行后自动关闭,而是要等待手动显性事务提交或回滚后再关闭。

3、当一个Query类控件手动显性执行了Prepare命令,连接不会在SQL执行后自动关闭,而是要等待手动显性UnPrepare命令后或SQL变动后再关闭。

4、如果数据集采用了Lock模式锁定当前记录(TCustomDADataSet.LockMode = lmLockImmediate),则连接会在用户编辑记录期间一直开启,直到用户Post或Cancel记录编辑。

以上2、3、4说明:凡是显性手动动作将影响数据库连接的自动关闭功能,需要手动显性反向操作后,数据库连接才会自动关闭。

5、如果数据库连接的网络不稳定,可以开启网络自动连接功能(LocalFailover := True),如果网络很稳定则可以不要。

6、在数据提交数据库服务器时,可以通过设置批量处理的数量(UpdateBatchSize := 10),让客户端一次性提交多个处理,减少网络通信次数,从而减少网络风险,对网络不稳定的情况有用。

ODAC(V9.5.15) 学习笔记(十五)数据离线模式的更多相关文章

  1. ODAC(V9.5.15) 学习笔记(五)TSmartQuery

    TSmartQuery是相对于TOraQuery更简洁的数据集,其成员如下 名称 类型 说明 Expand Boolean 缺省为False,如果为True,则表示无论SQL中罗列的字段是哪些,数据集 ...

  2. ODAC(V9.5.15) 学习笔记(十七)主从模式

    主从模式(Master/Detail mode)是指建立主表和从表关系的多个数据集集合模式. 1. 关系设置 要设置主从模式,必须有一个主表数据集(TDataSet)和一个从表数据集(TDataSet ...

  3. python3.4学习笔记(十五) 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)

    python3.4学习笔记(十五) 字符串操作(string替换.删除.截取.复制.连接.比较.查找.包含.大小写转换.分割等) python print 不换行(在后面加上,end=''),prin ...

  4. ODAC(V9.5.15) 学习笔记(一)总论

    一直在使用ODAC做开发,没时间仔细研究一下,目前采用的是3层结构,ODAC+TDataSetProvider+TClientDataSet做数据处理,也没有多大问题.下一步要开发B/S的程序了,打算 ...

  5. ODAC(V9.5.15) 学习笔记(三)TOraSession(3)

    3. 选项 TOraSession的Options有如下内容 名称 类型 说明 CharLength TCharLength 单个字符的长度,缺省0,表示从服务器获取对应的字符集中单个字符长度 Cha ...

  6. ODAC(V9.5.15) 学习笔记(三)TOraSession(1)

    1. 连接相关 名称 类型 说明 ConnectDialog 执行连接对话框控件 Connected Boolean 连接状态,通过函数Connect和Disconnect连接或关闭数据库连接,并触发 ...

  7. (转载)西门子PLC学习笔记十五-(数据块及数据访问方式)

    一.数据块 数据块是在S7 CPU的存储器中定义的,用户可以定义多了数据块,但是CPU对数据块数量及数据总量是有限制的. 数据块与临时数据不同,当逻辑块执行结束或数据块关闭,数据块中的数据是会保留住的 ...

  8. (C/C++学习笔记) 十五. 构造数据类型

    十五. 构造数据类型 ● 构造数据类型概念 Structured data types 构造数据类型 结构体(structure), 联合体/共用体 (union), 枚举类型(enumeration ...

  9. ODAC (V9.5.15) 学习笔记(二十)大数据量获取处理

    ODAC获取数据的效率比较高,在Web程序中希望能够更快获取第一页的数据时,可以有几种方式: 1.在数据库中进行分页处理: 2.获取所有数据,只是快速返回第一页数据. 第一种方案对应用服务器资源消耗最 ...

随机推荐

  1. js 调整排序

    <html> <head> <script type='text/javascript' src='jquery-1.8.2.min.js'></script ...

  2. Python编码/文件读取/多线程

    Python编码/文件读取/多线程 个人笔记~~记录才有成长   编码/文件读取/多线程 编码 常用的一般是gbk.utf-8,而在python中字符串一般是用Unicode来操作,这样才能按照单个字 ...

  3. Windows Azure 使用体验

    本文只是对Windows Azure的肤浅使用做个记录,算是简单入门吧. 一.门户网站 Windows Azure其实有两个版本,我们在国内所说的或者说所用的就是有别于国际版的,主要原因我想各位也是知 ...

  4. 无线客户端框架设计(4):自定义生命周期的设计(iOS篇)

    首先要确定一点,我们的App,要基于XIB文件进行编程,而不是在每个相应的ViewController里面去手动创建页面的每个控件.这样做的好处是,将页面布局与业务逻辑彻底隔离.于是我们可以把xib的 ...

  5. winform下重画ListBox

    Windows Forms是由Win32 API封装的开发组件,最初是为了替代mfc,但却没有体现与Model View Controller架构对应的特色,进而在.net framework 3.0 ...

  6. C语言实现二叉树-利用二叉树统计单词数目

    昨天刚参加了腾讯2015年在线模拟考: 四道大题的第一题就是单词统计程序的设计思想: 为了记住这一天,我打算今天通过代码实现一下: 我将用到的核心数据结构是二叉树: (要是想了解简单二叉树的实现,可以 ...

  7. paip.spring 获取bean getBean 没有beanid的情况下

    paip.spring 获取bean  getBean 没有beanid的情况下 spring能自动扫描带有注解的bean文件.. 作者Attilax  艾龙,  EMAIL:1466519819@q ...

  8. atittit.表单验证的实现方式以及原理本质以及选型以及自定义兼容easyui dsl规则的表单验证

    atittit.表单验证的实现方式以及原理本质以及选型以及自定义兼容easyui dsl规则的表单验证 1. 需求,表单验证需要弹框式,但目前easyui ms绑定死了tooltip式样 1 2. 表 ...

  9. iOS-App生命周期

    iOS APP 生命周期   官方文档: https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneO ...

  10. AngularJS(一)

    什么是AngularJS[双向数据绑定:从界面的操作能实时反映到数据,数据的变更能实时展现到界面.]?1.AngularJS 使得开发现代的单一页面应用程序(SPAs:Single Page Appl ...