免费预览已结束,剩余7页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Delphi连接Oracle数据库的三种方式2007-09-14 14:08Oracle是以高级结构化查询语言(SQL)为基础的大型关系数据库,是目前最流行的客户/服务器(CLIENT/SERVER)体系结构的数据库之一,目前被广泛应用于各类型企业的信息化管理中。数据库支持是Delphi7.0开发环境的一个重要特性,很多程序员在数据库应用程序开发中都采用Delphi7.0作为开发工具,来实现对数据库的访问和控制。Delphi数据库应用程序是通过数据库引擎来访问它们引用的数据源的。本文概括性的介绍在Windows XP环境中Delphi7.0连接Oracle数据库的3种方式,它们分别是BDE、ADO、DbExpress。这3种方式都需要安装Oracle客户端并配置tnsnames.ora文件。将Oracle客户端安装到本地计算机,打开c:oraclenetworkadmintnsnames.ora文件,按照所要访问的数据库的配置,添加下面的内容TEST =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 34)(PORT = 1521) )(CONNECT_DATA =(SID = test) ) 其中HOST,PORT,SID的值与所访问的数据库配置有关。1传统的BDE BDE(Borland Database Engine)使用别名引用数据库文件或目录,需要在客户的计算机上与应用程序一起安装BDE。连接步骤:1.1 安装BDE。在Delphi7.0的安装盘中含有BDE安装程序,按照默认方式安装的计算机,并配置好所要访问的Oracle数据库的别名,例如:test。1.2 在Delphi7.0的程序中连接Oracle数据库。将BDE选项卡中的Database组件将放入应用程序的主窗体,双击TDatabase,出现TDatabase组件编辑器,输入数据库别名、用户名和密码,点击按钮。在对象检视器中将TDatabase组件的LoginPrompt属性值设为False(避免出现登陆对话框,下同),将TDatabase组件的Connected属性值设为True,这样就成功的连接到Oracle服务器了。1.3 使用TTable组件访问数据。将TTable组件放置到应用程序的主窗体,设置其DatabaseName属性值为test,再放入TdataSource和TDBGrid组件,接下来的工作就与开发本地数据库应用程序相同了。2 Microsoft的ADO ADO(ActiveX Data Objects)是Microsoft的高级接口,基于Microsoft的数据访问OLEDB技术而实现。连接步骤:2.1 在Delphi7.0的程序中连接Oracle数据库。将ADO选项卡中的TADOConnection组件放入应用程序的主窗体,双击TADOConnection,在出现的对话框中点选Use Connection String,在其下面的框中输入:Provider=MSDAORA.1;User ID=test;Data Source=test;Persist Security Info=False,其中test为Oracle服务器名和用户名。在对象检视器中将TADOConnection组件的LoginPrompt属性值设为False,将TADOConnection组件的Connected属性值设为True,这样就成功的连接到Oracle服务器了。2.2 使用TADOCommand组件访问数据。将TADOCommand组件放置到应用程序的主窗体,设置其Connec tion属性值为Connection1,点击其CommandText属性值,在出现的对话框中输入SQL查询语句(本文以查询数据为例),再放入TdataSource和TDBGrid组件,接下来的工作就与开发本地型数据库应用程序相同了。3 新一代夸平台的数据库访问引擎DbExpress DbExpress是一组新的组件,技术和驱动程序,具备了夸平台的能力,让程序员能够开发出更有效率的数据库应用程序,因此会成为以后Delphi和Kylix的核心数据访问技术。连接步骤:3.1 在Delphi7.0的程序中连接Oracle数据库。将 dbExpress选项卡中的TSQLConnection组件放入应用程序的主窗体,双击TQLConnection,出现TSQLConnection组件编辑器,选择Oracle作为Driver Name,输入数据库名称、用户名和密码,点击按钮。在对象检视器中将TSQLConnection组件的LoginPrompt属性值设为False,将TSQLConnection组件的Connected属性值设为True,这样就成功的连接到Oracle服务器了。3.2 使用TSQLDataSet组件访问数据。将TSQLDataSet组件放置到应用程序的主窗体,设置其SQLConne ction属性值为SQLConnection1,点击其CommandText属性值,在出现的对话框中输入SQL查询语句(本文以查询数据为例),再放入TdataSource和TDBGrid组件,接下来的工作就与开发本地数据库应用程序相同了。类别:Delphi | 添加到搜藏 | 浏览(2844) | 评论(1) 上一篇:RMVB电影中广告的去除下一篇:Server Application ErrorA 安装相关软件 B 进行适当的配置 A在适当的位置安装适当的软件: 你的电脑为客户端,所以必须: 1安装ORACLE的Oracle Net通讯软件,它包含在oracle的客户端软件中。 (当然,如果你安装了ORACLE服务器版也包括 Oracle Net) 2正确配置了sqlnet.ora文件: NAMES.DIRECTORY_PATH = (TNSNAMES, .) NAMES.DEFAULT_DOMAIN=DB_DOMAIN 一般情况下我们不用NAMES.DEFAULT_DOMAIN参数。如果想不用该参数用#注释掉或将该参数删除即可,对于NAMES.DIRECTORY_PATH参数采用缺省值即可,对于NAMES.DEFAULT_DOMAIN参数有时需要注释掉,在下面有详细解释。 3正确配置了tnsname.ora文件 B进行适当的配置 如何正确配置tnsname.ora文件: 可以在客户端机器上使用oracle Net Configuration Assistant或oracle Net Manager图形配置工具对客户端进行配置,该配置工具实际上修改tnsnames.ora文件。所以我们可以直接修改tnsnames.ora文件,下面以直接修改tnsnames.ora文件为例: 该文件的位置为: networkadmintnsnames.ora (for windows) /network/admin/tnsnames.ora (for unix) (为你的ORACLE安装的目录) 此处,假设服务器名为testserver,服务名为,使用的侦听端口为1521,则tnsnams.ora文件中的一个test网络服务名(数据库别名)为: test = (DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT=1521) ) (CONNECT_DATA=(SERVICE_NAME=) ) ) 内容解释如下: PROTOCOL:客户端与服务器端通讯的协议,一般为TCP,该内容一般不用改。 HOST:数据库侦听所在的机器的机器名或IP地址,数据库侦听一般与数据库在同一个机器上,所以当我说数据库侦听所在的机器一般也是指数据库所在的机器。在UNIX或WINDOWS下,可以通过在数据库侦听所在的机器的命令提示符下使用hostname命令得到机器名,或通过ipconfig(for WINDOWS) or ifconfig(for UNIX)命令得到IP地址。需要注意的是,不管用机器名或IP地址,在客户端一定要用ping命令ping通数据库侦听所在的机器的机器名,否则需要在hosts文件中加入数据库侦听所在的机器的机器名的解析。 PORT:数据库侦听正在侦听的端口,可以察看服务器端的listener.ora文件或在数据库侦听所在的机器的命令提示符下通过lnsrctl status listener name命令察看。此处Port的值一定要与数据库侦听正在侦听的端口一样。 SERVICE_NAME:在服务器端,用system用户登陆后,sqlplus show parameter service_name命令察看。 如何利用配置的网络服务名连接到数据库: 用sqlplus程序通过test网络服务名进行测试,如sqlplus system/managertest。如果不能连接到数据库,则在tnsname.ora文件中的test网络服务名(net service)后面加上Oracle数据库的DB_Domain参数值,通过用sqlplus show parameter db_domain命令察看。此处db_domain参数值为,将其加到网络服务名后面,修改后的tnsname.ora中关于该网络服务名的内容为: = (DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT=1521) ) (CONNECT_DATA=(SERVICE_NAME=) ) ) 用sqlplus程序通过网络服务名测试,如sqlplus system/。 关于为什们在网络服务名后面加db_domain参数,需要了解sql*plus连接数据库的原理。参考资料:/jianzhan/wzkf/shujuku/ORACLE/200604/9531.htmlOracle数据库中主要配置文件的经典解析敬业的IT人 2008-1-8 9:52:32 Oracle 主要配置文件: profile文件,oratab 文件,数据库实例初始化文件 initSID.ora,监听配置文件, sqlnet.ora 文件,tnsnames.ora 文件 1.2 Oracle 主要配置文件介绍 1.2.1 /etc/profile 文件 系统级的环境变量一般在/etc/profile 文件中定义 在 CAMS 系统 与数据库 相关的环境变量就定义在/etc/profile 文件中 如下所示 export ORACLE_BASE=/u01/app/oracleexport $ORACLE_BASE/product/8.1.7exportORACLE_HOME= $ORACLE_HOME/binexport$PATH:PATH= $ORACLE_HOME/lib:/usr/libexport ORACLE_SID=camsexportLD_LIBRARY_PATH= $ORACLE_HOME/ocommon/nls/admin/dataexportORACLE_TERM=vt100export ORA_NLS33= NLS_LANG=AMERICAN.ZHS16CGB231280说明 1 配置上述环境变量要注意定义的先后顺序 如: 定义 ORACLE_HOME 时 用 到 了 ORACLE_BASE,那 么 ORACLE_HOME 的 定 义 应 该 在 ORACLE_BASE之后 2 使用中文版 CAMS 环境变量 NLS_LANG 的值应该设置为 AMERICAN.ZHS16CGB231280 如上所示在使用英文版 CAMS时 可 以不设置 NLS_LANG 即去掉 export NLS_LANG=. . 那一行 也可以 设置 NLS_LANG 的值为 AMERICAN_AMERICA.US7ASCII 1.2.2 /etc/oratab 文件 /etc/oratab 文件描述目前系统中创建的数据库实例 以及是否通过 dbstart 和 dbshut 来控制该实例的启动与关闭 如下所示 忽略以#开头的注释部分 : cams:/u01/app/oracle/product/8.1.7:Y 其中 cams 为实例 ID /u01/app/oracle/product/8.1.7为 ORACLE_HOME目 录 Y表示允许使用 dbstart和 dbshut 启动和关闭该实例数据库 如果设置为 N 表示不通过 dbstart 和 dbshut 启动和关闭实例数据库 CAMS 系统要求在 安装完 ORACLE 后要求将该参数修改为 Y 以保证 ORACLE 数据库自启动和关闭 1.2.3 数据库实例初始化文件 initSID.ora 每个数据库实例都有一个初始化 参数文件 其缺省 存放的路径为 $ORACLE_BASE/admin/pfile 其名称为 init.ora 如 cams 实 例 对 应 的 参 数 文 件 为 initcams.ora 缺 省 存 放 路 径 为 $ORACLE_BASE/admin/cams/pfile 即/u01/app/oracle/admin/cams/pfile 但 在 CAMS 应 用 中 initcams.ora 的 存 放 路 径 为 /u02/app/oracle/admin/cams/pfile 这是基于数据与应用程序分开存放更好地 保护数据考虑的 尤其在 CAMS 双机应用模式下 能够保证数据的一致性 具体的修改操作可参考 Linux与 Oracle 安装手册 初始化参数文件是一个包含实例配置参数的文本文件 这些参数被设置为特 定的值 用于初始化 Oracle 实例的多数内存和进程设置 以下是一些主要参 数的说明 1 实例的数据库名称 db_name = cams2 实例名称 instance_name = cams3 数据库控制文件的名称和位置 control_files = (/u02/app/oracle/oradata/cams/control01.ctl,/u02/app/oracle/oradata/cams/control02.ctl,/u02/app/oracle/oradata/cams/control03.ctl)4 调度作业队列的 SNP 进程的数量以及 SNP 进程觉醒时间间隔秒 JOB_QUEUE_PROCESSES=2JOB_QUEUE_INTERVAL=605 存储追踪和告警文件的路径 user_dump_dest 指定记录 Oracle 用户进程产生的追踪和告警信息的文件的 存放路径 background_dump_dest 指定记录 Oracle 后台进程产生的追踪和 告警信息的文件的存放路径 core_dump_dest指定Oracle运行所产生的coredump 信息的文件的存放路径. background_dump_dest = /u02/app/oracle/admin/cams/bdumpcore_dump_dest = /u02/app/oracle/admin/cams/cdumpuser_dump_dest = /u02/app/oracle/admin/cams/udump6 UTL_FILE_DIR 参数 UTL_FILE_DIR = *UTL_FILE_DIR 参数指定一个或多个目录用于 Oracle 应用的文件 I/O 如备 份数据到文件 在 CAMS 系统中将该值设置为 * 表示可供 Oracle 应 用进行文件 I/O操作的目录为任意目录 因此 只要空间允许 可以将备份数 据存放到任意目录下 1.2.4 监听配置文件 为了使得外部进程 如 CAMS后台程序 能够访问 Oracle 数据库 必须配 置 Oracle 网络服务器环境 配置 Oracle 网络服务器环境是通过配置 listener.ora sqlnet.ora 和 tnsnames.ora 共三个文件来进行的 listener.ora 即监听配置文件 在本小节说明 另两个文件分别在随后的两个小节说明 $ORACLE_HOME/network/admin监听配置文件 listener.ora 的存放路径为 以下是一个示例 LISTENER = #监听器名称 (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC) ) (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = localhost.localdomain) (PORT = 1521) ) ) (DESCRIPTION = (PROTOCOL_STACK = (divSENTATION = GIOP) (SESSION = RAW) ) (ADDRESS = (PROTOCOL = TCP) (HOST = localhost.localdomain) (PORT = 2481) ) ) SID_LIST_LISTENER = #命名规则 SID_LIST_+上面定义的监听器名称 (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc1) (ORACLE_HOME = /u01/app/oracle/product/8.1.7) (PROGRAM = extproc) ) (SID_DESC = (GLOBAL_DBNAME = cams) (ORACLE_HOME = /u01/app/oracle/product/8.1.7) (SID_NAME = cams) ) (SID_DESC = (GLOBAL_DBNAME = oid) (ORACLE_HOME = /u01/app/oracle/product/8.1.7) (SID_NAME = oid) ) ) 说明 1 listener.ora 文件中定义一个监听器 其缺省的名称为 LISTENER 这个监听器缺省以tcp/ip为协议地址且端口号为1521运行 在CAMS应用中 监听文件定义的监听器就使用这个缺省名字 并且使用缺省的协议 tcp/ip 和缺省的端口号 1521 待配置好监听文件以及随后说明的 sqlnet.ora 和 tnsnames.ora 文件之后 就可以用以下命令将监听文件中定义的监听器启动 起来 $ lsnrctl start停止监听器的命令为 $ lsnrctl stop监测监听器当前状态的命令为 $ lsnrctl status当 lsnrctl status 命令有如下输出结果 STATUS of the LISTENER-Alias LISTENERVersion TNSLSNR for Linux: Version .0 - ProductionStart Date 17-JAN-2004 19:00:08Uptime 31 days 15 hr. 27 min. 59 sec就说明监听器正在运行 否则说明监听器已经停止了 CAMS 系统的后台程 序的正常运行不仅依赖于数据库实例的运行 还依赖于这个数据库监听器的 运行 假如监听器没有启动 即使数据库已经启动 CAMS 后台程序仍然不 能正常工作 2 (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC)所示的一个 IPC 协议地址的监听 是为了外部进程调用用的 在数据库安装时自动设定 不需要改动 3 在监听文件后部还有一个 SID_LIST_LISTENER 段 该段用于定义监听 器的服务 即为哪些数据库实例提供监听服务 以 cams 实例为例 其对应的 服务信息为 (SID_DESC = (GLOBAL_DBNAME = cams) #数据库名 (ORACLE_HOME = /u01/app/oracle/product/8.1.7) (SID_NAME = cams) #数据库实例名)1.2.5 sqlnet.ora 文件 sqlnet.ora 文件的存放路径为 $ORACLE_HOME/network/admin 以下是一个示例 NAMES.DEFAULT_DOMAIN = localdomainNAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)说明 NAMES.DEFAULT_DOMAIN 指定网络域名 NAMES.DIRECTORY_PATH 指定当解析客户端连接标识符时命名方法 naming metthods 采用的优先顺 序 从左至右递减,在 CAMS 应用中, 这两个参数采用上述所示的系统缺省值 1.2.6 tnsnames.ora 文件 tnsnames.ora 文件的存放路径为 $ORACLE_HOME/network/admin 以下 是一个示例 OID.LOCALDOMAIN = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT =1521) ) (CONNECT_DATA = (SERVICE_NAME = oid) ) )CAMS.LOCALDOMAIN = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT =1521) ) (CONNECT_DATA = (SERVICE_NAME = cams) ) )INST1_HTTP.LOCALDOMAIN = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT =1521) ) (CONNECT_DATA = (SERVER = SHARED) (SERVICE_NAME = MODOSE) (divSENTATION = http:/admin) ) )EXTPROC_CONNECTION_DATA.LOCALDOMAIN = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC) ) (CONNECT_DATA = (SID = PLSExtProc1) (divSENTATION = RO) ) )说明 tnsnames.ora 文件中定义一个或多个网络服务 net service cams 实例对 应的网络服务为 CAMS.LOCALDOMAIN = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = localhost.localdomain) (PORT = 1521) ) (CONNECT_DATA = (SERVICE_NAME = cams) ) )注意:这里 ADDRESS项包含三个子参数 PROTOCOL :默认协议TCPHOST :ip地址PORT:端口,默认1521CAMS.LOCALDOMAIN为数据名要确保在监听文件中也有对应的一个 ADDRESS 项也包含同样的三个子参 数 并且子参数的值对应都相等 另外 这里 SERVICE_NAME 的值必需确 保与监听文件中某 SID_DESC项下的 SID_NAME参数的值相等 Delphi连接Oracle有很多种方式,但大多要在客户机上安装Oracle那庞大的客户端,比较的不方便,使用ODAC控件连接Oracle则免去了这等麻烦.ODAC也是Oracle公司开发的控件.有for Delphi 6- Delphi 2007的版本,最新的ODAC版本已经到了ODAC .21版本了,不过对于我们来说,版本不一定要最新的,够用最好,不是么?Oracle 数据访问组件 (ODAC), 全称:Oracle Data Access Components, Oracle 数据存取组件(ODAC) 库为Borland Delphi,C+ Builder 以及 Kylix提供了一些非可视化的组件,它们用来存取Oracle关系数据库系统,ODAC 直接使用 Oracle 调用接口 (OCI). OCI 是一种允许应用程序开发人员使用第三方开发语言存取Oracle数据服务器的过程或函数以及控制所有的SQL语句执行状态的应用程序接口(API)。OCI 通过一个动态运行库(ORA*.DLL)提供了一个标准的数据库存取库及函数,以在应用程序中建立连接。也可以使用ODAC的Net选项而无需在客户机上安装Oracle客户端来连接到Oracle.在这种情况下,ODAC仅需要TCP/IP协议的支持,从而可以创建真正的、最小的数据库应用程序。下面是安装步骤(通过修改对应版本下的make.bat文件编译也可以达到如下效果):安装环境:ODAC 6.10,Delphi 2006以下是引用片段:编译及安装:在Project Manager对应的bpl上单击右键先Compile再Install1、打开并编译安装SourceDelphi10dac100.dpk2、打开并编译安装SourceDelphi10dacvcl100.dpk3、打开并编译安装SourceDelphi10dcldac100.dpk4、打开并编译安装SourceDelphi10odac100.dpk5、打开并编译安装SourceDelphi10odacvcl100.dpk6、打开并编译安装SourceDelphi10dclodac100.dpk7、打开并编译安装SourceDelphi10oraprov100.dpk8、将C:Program FilesBorlandBDS4.0ODACSource和C:Program FilesBorlandBDS4.0ODACSourceDelphi10添加到Search Pa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 漳平租房合同
- 茂名购房合同
- 美甲店合作合同
- 违约劳动合同
- 对严重违反社区戒毒协议书
- 单位福利房转让协议书
- 车晓离婚协议书
- 残疾专干协议书
- 果蔬供货协议书
- 怀孕离婚协议书范本
- 项目1-电子商务认知
- 高艳津子现代舞的创作实践、审美追求及文化取向
- 现代汉语课件完全版
- GB/T 7025.3-1997电梯主参数及轿厢、井道、机房的型式与尺寸第3部分:V类电梯
- GB/T 5276-2015紧固件螺栓、螺钉、螺柱及螺母尺寸代号和标注
- 印刷oled el概述培训课程
- HI-IPDV10芯片产品开发流程V10宣课件
- 非煤矿山露天开采讲解学习课件
- 国际物流培训课件
- 售后维修服务单模板
- 三年级数学《千米的认识》课件
评论
0/150
提交评论