当前位置: 首页 > news >正文

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

一直在使用ODAC做开发,没时间仔细研究一下,目前采用的是3层结构,ODAC+TDataSetProvider+TClientDataSet做数据处理,也没有多大问题。下一步要开发B/S的程序了,打算用ODAC+uniGUI来完成,数据处理上其实可以按照2层结构,相比3层结构要简单些,性能预计也要好些。所以需要仔细研究一下ODAC的功能。岁数大了,做个笔记免得忘了。以下大部分材料来自于ODAC的帮助文件,E文不是太好,只能大概了解意思,难免有错,阅读和使用时需要进一步核实。

1.1.  简介

ODAC(Oracle Data Access Components)是RAD下用于直接访问Oracle数据库的专用控件组。其最大的特点是:可以不用安装Oracle客户端就能够直接访问Oracle数据库,并对Oracle数据库中的众多特色功能进行了封装。

ODAC目前最新版本为9.5.15,本文以此版本为基础进行介绍。该版本支持Delphi、C++Builder和Lazarus下的多个版本,支持VCL或FMX控件。该版本对直接访问模式(Direct mode)进行了开源。开发的软件支持Android、IOS、Windows32/64等多个平台。不过我们开发的与Oracle相关的程序,一般是C/S/S或B/S架构的服务器端程序,所以只考虑Windows32/64平台下的开发。

ODAC采用了原生态的网络连接(TCP/IP)与Oracle服务器通信(Direct mode),越过了Oracle的客户端程序,性能更加优越。当然为稳定也可以使用Oracle的客户端连接。

 

1.2.  特点

按照官方文件说明,ODAC的9.5.15版主要具有以下特点:

1、  Direct模式下可以直接访问Oracle数据库,不需要安装Oracle客户端,不需要BDE或ODBC等数据库客户端引擎,安装和部署更方便。

2、  支持目前Oracle的所有服务器版本,包括12c、11g、10g、9i、8i、8.0、7.3,支持Oracle简化版(Oracle Express Edition 11g/10g)。

3、  支持数据离线模式(Disconnected Mode),在数据缓冲到客户端后,可以断开与服务器的连接,以减少Oracle服务器资源的开销,所有操作在本地内存中完成,当需要提交数据时重新连接Oracle服务器。

4、  支持所有数据类型的本地索引和过滤,包括计算字段和Lookup字段。

5、  自动进行数据更新,包括ODAC自动生成的更新SQL或自定义的SQL,能够自动提交到数据库服务器,或缓冲模式下手工提交到数据库。

6、  支持SQL脚本执行,这样一来很多升级脚本可以通过软件自动运行了。

7、  支持对包(Package)的封装和运行。只需要一个控件就可以控制一个包中所有过程和函数的执行了。

8、  支持失效备援模式(Transparent application failover ,TAF)当数据库连接因各种原因断开(最常见的是网络原因),ODAC能够自动进行重新连接并确保客户端数据不丢失,相比传统2层架构软件的数据库连接有巨大优势。

9、  支持SQL语句的监控,即SQLMonitor。

10、            支持内存表,可以在客户端内存中建立数据表进行操作。

11、            支持Oracle的消息队列功能。

12、            其他功能,如分布式事务处理、双字节字符处理等。

相关文章:

  • 暴力分析backbone.js(1)
  • HISTFILESIZE与HISTSIZE的区别
  • #pragma data_seg 共享数据区(转)
  • Spring Custom Bean with BeanPostProcessor
  • LAMP架构之分离式-php-fpm
  • JQuery为元素添加样式
  • Export-XLSX PowerShell generate real Excel XLSX files without Excel and COM
  • Linux动态库搜索路径的技巧
  • 非常特别的一个动态规划新手教程
  • clustershell批量执行shell命令
  • 如何把SKYPE的发送消息由enter改为ctrl+enter?
  • 如何学习开源项目
  • OAF 中对文字实现html效果及对超级长文本实现默认换行,messageTextInput只读后内容自动换行,...
  • .NET业务框架的构建
  • sql行列转换
  • [数据结构]链表的实现在PHP中
  • [译]Python中的类属性与实例属性的区别
  • 【391天】每日项目总结系列128(2018.03.03)
  • Angular 响应式表单 基础例子
  • angular2 简述
  • C# 免费离线人脸识别 2.0 Demo
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • Linux快速复制或删除大量小文件
  • Linux链接文件
  • redis学习笔记(三):列表、集合、有序集合
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • 笨办法学C 练习34:动态数组
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 如何进阶一名有竞争力的程序员?
  • 责任链模式的两种实现
  • 怎么将电脑中的声音录制成WAV格式
  • Prometheus VS InfluxDB
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • $jQuery 重写Alert样式方法
  • (C++)八皇后问题
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (译) 函数式 JS #1:简介
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)h264中avc和flv数据的解析
  • (转)Windows2003安全设置/维护
  • *1 计算机基础和操作系统基础及几大协议
  • .NET Core 中插件式开发实现
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .Net 应用中使用dot trace进行性能诊断
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .NET程序员迈向卓越的必由之路
  • @Autowired 与@Resource的区别
  • [20190113]四校联考