3. 选项 TOraSession的Options有如下内容 名称 类型 说明 CharLength TCharLength 单个字符的长度,缺省0,表示从服务器获取对应的字符集中单个字符长度 Charset String 指定ODAC的字符集,只能在Oracle8的客户端下使用 ClientIdentifier String 客户端标识,只能在Oracle9及以上版本使用 ConnectionTimeout Integer 连接超时时间(毫秒),缺省0表示一直等待到成功或报错 DateForm…
2. 事务相关 名称 类型 说明 AutoCommit Boolean 是否自动提交事务 注意:只有当TOraSession和TOraQuery的AutoCommit都为True时才对每个数据库操作自动提交事务,否则需要手动提交. InTransaction boolean 是否正在事务中 Savepoint 记录回滚点,回滚时可以指定回滚点进行回滚 RollbackToSavepoint StartTransaction 启动事务 Commit 提交事务 Rollback 回滚事务 SQL T…
1. 连接相关 名称 类型 说明 ConnectDialog 执行连接对话框控件 Connected Boolean 连接状态,通过函数Connect和Disconnect连接或关闭数据库连接,并触发OnConnectChange事件. ConnectMode TConnectMode 数据库连接方式,取值如下: cmNormal 缺省,普通用户连接 cmSysASM 以SYSASM角色连接 cmSysDBA 以SYSDBA角色连接 cmSysOper 以SYSOPER角色连接 ConnectP…
4. 数据库信息 名称 类型 说明 GetDatabaseNames 获取对应的数据库对象名称列表 GetSequenceNames GetStoredProcNames GetTableNames 5. 其他 名称 类型 说明 Debug boolean 是否进入Debug模式,缺省False 进入IDE环境的Debug模式后,将显示SQL语句及其参数的数据类型 OracleVersion string Oracle版本号 Schema string 当前用户模式,可以在连接状态下改变当前连接…
一直在使用ODAC做开发,没时间仔细研究一下,目前采用的是3层结构,ODAC+TDataSetProvider+TClientDataSet做数据处理,也没有多大问题.下一步要开发B/S的程序了,打算用ODAC+uniGUI来完成,数据处理上其实可以按照2层结构,相比3层结构要简单些,性能预计也要好些.所以需要仔细研究一下ODAC的功能.岁数大了,做个笔记免得忘了.以下大部分材料来自于ODAC的帮助文件,E文不是太好,只能大概了解意思,难免有错,阅读和使用时需要进一步核实. 1.1.  简介 O…
直接访问模式(Direct mode)是ODAC最大的特色之一,即不需要安装Oracle客户端,ODAC越过了OCI(Oracle Call Interface ),使用TCP/IP协议就可以直接与Oracle服务器通信,使得ODAC程序的部署非常方便,性能也非常高. 要设置直接访问模式,只需要将连接组件的选择项Direct设为True Session.Options.Direct := True; 其他的参数设置同正常模式.使用直接访问模式的优势是不需要安装Oracle客户端,部署更方便,资源…
名称 类型 说明 SequenceMode TSequenceMode ODAC可以直接利用Oracle中的序列对象为表的主键赋值,从而实现主键自动增长的功能.该属性决定了在什么场合下使用序列: smInsert       新增记录时 smPost          更新记录时 注意:根据序列更新的字段由KeyFields决定 KeySequence Oracle中用于生成主键的序列名称 CheckMode TCheckMode 在更新一条记录前,对当前记录进行检查的模式,包括: cmExce…
6.Options TCustomDADataSet的选择项为TDADataSetOptions,其成员介绍如下表 : 名称 类型 说明 TDADataSetOptions AutoPrepare Boolean 执行SQL前是否自动执行Prepare CacheCalcFields Boolean 缓冲计算字段(TField.Calculated)和Lookup字段(Tfield.Lookup),能有效提高数据集访问速度,但是也会导致内存使用增加 CompressBlobMode Boolea…
ODAC的控件有26个,简单介绍如下: TOraSession  管理Oracle的连接  TOraQuery  使用SQL进行数据获取,自动将更新提交数据库  TSmartQuery    在处理字段不多而记录多的大型表时更有效率的Query控件.  TOraSQL  SQL语句执行控件,包括PL/SQL块等,不返回数据集结果  TOraTable  对单表操作的控件  TOraStoredProc      存储过程控件,允许编辑光标数据并以参数形式返回  TOraNestedTable …
ODAC获取数据的效率比较高,在Web程序中希望能够更快获取第一页的数据时,可以有几种方式: 1.在数据库中进行分页处理: 2.获取所有数据,只是快速返回第一页数据. 第一种方案对应用服务器资源消耗最小,对数据库消耗略大,在客户需要对全数据进行灵活过滤.查找.统计时就有些不够用了,另外对耗时较大的SQL查询就不如第二种方案速度快,对数据库压力也要大些,并且需要编写程序来完成.在Delphi下我考虑使用第二种方案,尤其是在使用uniGUI+ODAC配合使用时.第二种方案对应于服务器内存压力略大,并…
ODAC支持通过Oracle的序列来自动生成表的主键功能.这个过程允许在客户端自动完成,不需要过多代码.这个对一些要求自动增长字段做主键的场合非常有用.其实现步骤为: 1.数据库必须先建立生成主键的序列. 2.设置数据集的KeySequence属性,指向数据库中的序列. 3.设置数据集的SequenceMode属性,明确是在新增时还是修改时生成序列值,并赋值给数据集的主键. 4.设置数据集的KeyFields属性,指向表的关键字段.如果KeyFields中有多个字段时,序列值会自动赋值给第一个字…
数据集的缓冲模式(Cached mode)是将数据库服务器的数据缓冲在客户端内存中进行处理,不再依赖服务器.只有当数据需要提交数据库服务器进行保存时,才将变更数据一次性提交数据库服务器. 数据集缓冲模式的最大优点是减少了对数据库服务器的资源消耗,甚至可以在网络断开的情况下,对数据进行处理然后在网络连接后,提交数据库保存.与传统的2层架构数据库软件相比,有巨大的抗网络故障能力.包PB在内的绝大多数2层架构软件,一旦网络临时中断,导致数据库连接中断,客户端所有未能保存的修改将被丢弃,而在ODAC中这…
主从模式(Master/Detail mode)是指建立主表和从表关系的多个数据集集合模式. 1. 关系设置 要设置主从模式,必须有一个主表数据集(TDataSet)和一个从表数据集(TDataSet),且主表数据集关联一个数据源组件(TDataSource),并将从表数据集的MasterSource指向该数据源组件,最后设置关联字段.设置主从表之间关联字段有2种形式: 1.在从表数据集的SQL中设置外键,通过参数指向主表的字段,如: //主表数据集 Master := TOraQuery.Cr…
数据离线模式(Disconnected Mode)是指数据库只有在需要的时候才连接,数据的处理放在客户端内存缓冲区中完成.这样做最大的好处是减少了网络资源依赖,对数据库服务器的资源开销和压力也减少.如果客户端需要经常反复地连接和关闭数据库连接,也可以采用ODAC的连接池模式. 要实现数据离线模式,需要完成以下几个步骤: 1.设置连接组件的选择项,将离线模式设为True,自动提交属性保持缺省值True,如下: TCustomDAConnection.Options.DisconnectedMode…
1.SQL相关 名称 类型 说明 BaseSQL String 没有被AddWhere.SetOrderBy.FilterSQL等方法处理过的原始SQL语句 FinalSQL String 被AddWhere.SetOrderBy.FilterSQL等方法处理过的最终SQL语句 SaveSQL 将SQL属性中的值保存到BaseSQL中,以便在处理后能够还原 RestoreSQL 从BaseSQL中将语句还原到SQL属性 SQLSaved Boolean SQL是否被保存到BaseSQL中 SQL…
2.索引与过滤 名称 类型 说明 IndexFieldNames string 设置排序字段列表,每个字段之间通过分号分割.每个字段后可以有以下几种排序选项: ASC        升序 DESC      降序 同时还可以有以下选项: CIS         大小写不敏感 CS          大小写敏感 BIN        使用字符的码值排序 如: DataSet1.IndexFieldNames   := 'LastName ASC CIS;   DateDue DESC'; Rang…
所有的数据集类组件都是从TMemDataSet继承下来的,该组件实现了内存中对数据的管理,其主要的属性.方法和事件如下. 1.数据更新 名称 类型 说明 CachedUpdates Boolean 数据集是否采用缓冲模式 ApplyUpdates 将缓冲区中未提交的数据提交数据库,但不执行数据库的事务操作.此时缓冲区数据仍然存在,UpdateStatus状态处于修改状态,需要调用CommitUpdates来清除缓存中的数据,并将状态还原成非修改状态.ApplyUpdates没有放在Try Exc…
TOraQuery是ODAC中常用的一个组件,其继承关系如下: TDataSet ---TMemDataSet ---TCustomDADataSet ---TOraDataSet ---TCustomOraQuery ---TOraQuery TOraQuery的主要特有属性为: 名称 类型 说明 UpdatingTable String 在没有设置SQLInsert.SQLUpdate.SQLDelete属性情况下,SELECT的SQL语句返回结果需要更新到数据库中时,或需要刷新当前记录时,…
用TVirtualTable在内存中缓存TOraQuery中的数据,主要应用场景是参照其他数据,需要将TOraQuery中的数据复制到TVirtualTable,由于没有类似于TClientDataSet的Data属性,所以只能考虑数据对拷.原来考虑的是通过数据流方式,采用: ms := TMemoryStream.Create; try OraQuery1.SaveToXML(ms); VirtualTable1.LoadFromStream(ms); VirtualTable1.Open;…
名称 类型 说明 AbortOnKeyViol Boolean 在处理数据时,如果发生主键冲突或主键校验失败时,是否中断 AbortOnProblem Boolean 发生问题时是否中断 ChangedCount Integer 目标数据集变动记录数 CommitCount Integer 用于设置一次性移动到目标数据集中并提交的记录数,如果设置为0,则以目标数据集每32Kb空间的记录数 Destination TDataSet 目标数据集 Source TDataSet 源数据集 Mode T…
通过TOraMetaData控件获取Oracle数据库对象信息,首先需要设置MetaDataKind属性,然后设置Restrictions属性设置条件,最后通过激活数据集获取信息,演示代码如下: MetaData.Connection := Connection; MetaData.MetaDataKind := 'Columns'; MetaData.Restrictions.Values['TABLE_NAME'] := 'Emp'; MetaData.Open; 组件成员为: 名称 类型…
名称 类型 说明 Columns TDAColumns 需要载入数据的每个字段定义 LoadMode TLoadMode 载入模式,包括: lmDirect 通过内部数据缓冲区载入到数据库中 lmDML    将数据转换为DML语句再提交到数据库中 TableName 载入数据的表名称 CreateColumns 根据TableName指定的表在数据库中的定义创建所有的列,并存储在Columns中.Columns中以前定义的内容将被清除 Load 开始载入数据,触发OnPutData 或OnGe…
TOraEncryptor 名称 类型 说明 DataHeader TCREncDataHeader 一些附加信息放入加密数据中,包括: ehNone 无附加信息 ehTag   GUID和随机生成的初始化向量数据 ehTagAndHash  Hash.GUID和随机生成的初始化向量数据 EncryptionAlgorithm TCREncryptionAlgorithm 指定加密算法 HashAlgorithm TCRHashAlgorithm 指定Hash的算法 InvalidHashAct…
名称 类型 说明 Options TVirtualTableOptions 选择项,包括: voPersistentData:在数据集关闭时不处理其相关数据内容 voStored:设计期对数据集的处理以及录入的数据将保存在DFM文件中 AddField 增加一个字段,需要Active=True后生效 DeleteField 删除一个字段 DeleteFields 删除所有字段 Assign 从另外一个数据集中复制字段及其数据,需要Active=True后生效 Clear 清除内存数据集的所有记录…
名称 类型 说明 Active Boolean 激活SQL跟踪 DBMonitorOptions 将跟踪信息发送到dbMonitor工具软件的选择项 Host IP地址 Port 端口号 ReconnectTimeout 重新连接的TimeOut时间 SendTimeout 发送信息的TimeOut时间 Options 跟踪SQL的选择项 moCustom 当moDialog选择了后,允许数据集的Debug设置为True,以便将调试信息显示到IDE环境的Debug窗体中 moDBMonitor…
名称 类型 说明 DataSet 如果脚本中返回了数据结果,则通过该数据集进行获取 Delimiter string 脚本语句之间的分隔符 EndLine Integer 脚本中最后一行的行号 EndOffset Integer 脚本中最后一行的偏移量 EndPos Integer 脚本中最后一个字符的位置 StartLine Integer 脚本中第一行的行号 StartOffset Integer 脚本中第一行的偏移量 StartPos Integer 脚本中第一个字符的位置 SQL 脚本S…
名称 类型 说明 DataSet 指向需要执行更新操作的数据集 DeleteObject 当执行删除操作时,通过该属性执行另外一个数据集,由后者来执行更多的删除动作 DeleteSQL TStrings 删除所需要的SQL语句 InsertObject 当执行插入操作时,通过该属性执行另外一个数据集,由后者来执行更多的插入动作 InsertSQL 插入所需要的SQL语句 LockObject 当执行记录锁定操作时,通过该属性执行另外一个数据集,由后者来执行更多的该动作 LockSQL 记录锁定所…
TOraSQL是一个SQL语句执行控件,包括PL/SQL块等,不返回数据集结果. 名称 类型 说明 ChangeCursor Boolean 在非阻塞模式下是否允许改变屏幕的光标 WaitExecuting 在非阻塞模式下用于等待SQL执行结束 TOraTable 名称 类型 说明 TableName String 设定表的名称 EmptyTable 清空表的所有记录 PrepareSQL 根据表名称准备SQL语句,开启表时自动调用 TOraStoredProc 名称 类型 说明 Overloa…
TSmartQuery是相对于TOraQuery更简洁的数据集,其成员如下 名称 类型 说明 Expand Boolean 缺省为False,如果为True,则表示无论SQL中罗列的字段是哪些,数据集将自动获取所有字段数据和信息 SmartRefresh Boolean 缺省为False,如果为True,则表示应用程序在一个并发环境中,对数据库表中记录的修改,会通知其他共同使用的用户 DependEvents 在SmartRefresh模式下时,如果某个另外的数据集的RefreshEvent属性…
7.其他 名称 类型 说明 FindKey 类似于BDE的相关功能,在当前数据集中查找指定的记录 FindNearest 移动游标到最符合查找要求的第一条记录处 FindMacro 当前数据集中是否存在指定的宏 FindParam 当前数据集中是否存在指定的参数 GetDataType 获取指定字段的内部数据类型 GetFieldObject 获取数据集中指定字段的共享对象 GetFieldPrecision 获取数值字段的精度 GetFieldScale 获取字段的范围 GotoCurrent…