版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、VisualVisual C+C+中连接OracleOracle数据库的几种方法周计成,章立,刘晓林78179部队,成都610000Fars整理摘要介绍了Visual C+平台下连接Oracle数据库的几种主要方法,同时给出了具体 的使用步骤和例如。对这几种方法的特点进行了分析,比拟了它们的优点和应用 范围。关键词:Visual C+; Oracle数据库开发;ADO; OCI;Pro*C目录摘要.II第一讲引言.1第二讲VCVC连接OracleOracle数据库的方法 .22.12.1 ADOADO连接OracleOracle. 2(1)用-mport指令引入ADO类型库 .2(2)初始化O
2、LE/COM库环境 .2(3)在VC+中用ADO连接oracle的例如 .22.22.2 OCIOCI连接OracleOracle.2(1)定义OCI句柄.3(2)分配句柄.3(3)连接数据库.32.32.3 PROCPROC方式连接OracleOracle.4(1) PROC的可执行文件PROCUI. EXE.4(2) Oracle支持SQL在VC环境的库文件OraSQL8. LIB.4(3) Oracle支持SQL在VC环境的头文件 .4第三讲连接方法的比拟 .53.13.1数据访问应用程序接口特性 .53.23.2技术特性比拟 .53.33.3性能特性.5参考文献 .6ReadRead
3、MeMe.7Fars PDF 整理 2021.7.251第一讲引言Oracle数据库是一种广泛使用的数据库系统,它的功能强大,具有良好的性能和较高的平安保密性,提供了与高级语言配合的专用接口,可以使用主流的开发 工具快速开发,同时支持C/S和B/S工作模式,因而被大量用到信息系统的开发1Microsoft提供了许多相关组件支持数据库的访问,Oracle公司也提供了Oracle数据库应用程序的开发接口。在Visual C+下连接Oracle库主要有3种方法。一 种方法是利用Visual C+提供的多种数据库访问技术, 如ActiveX数据对象ADO、 开放数据库连接ODBC、数据存取对象DAO、
4、对象连接和嵌入数据库OLE DB等。另一种方法是在Visual C+中嵌入SQL语句,文中指Pro*C/C+简称PROC。第三种方法是使用Oracle公司提供的底层接口开发工具OCI。Fars PDF 整理 2021.7.252第二讲VCVC连接OracleOracle数据库的方法2.12.1 ADOADO连接OracleOracle用ADO连接数据库的一般步骤如下:(1)用#import指令引入ADO类型库在stdafx.h中参加如下语句:#import c:program filescommon filessystemadomsado15.dll no_namespace rename (
5、EOF , adoEOF)它的作用是编译的时候系统会生成msado15.tlh和ado15. tli两个C+头文件来定义ADO库。在具体的开发环境中msado15.dll不一定在这个目录下,可按实际情况修改该文件的路径。(2)初始化OLE/COM库环境ADO库是一组COM动态库,应用程序在调用ADO前,必须初始化OLE/COM库环境。在MFC应用程序里,可以在应用程序主类的InitInstance成 员函数里初始化OLE/COM库环境。(3)在VC+中用ADO连接oracle的例如ADO库包含3个根本接 口:_ConnectionPtr接口、_CommandPtr接口和_RecordsetPt
6、r接口。与数据库的连接就是用_ConnectionPtr接口,它的连接字符 用可以是自己直接写,也可以指向一个ODBC DSN。在本例中用户名和密码都是test数据库名是myoracle。下面是例如代码:_ConnectionPtrm_pConnection;_RecordsetPtr m_pRecordset;/拓始化COM,创立ADO连接AfxOleInit ();m_pConnection.CreateInstance (_uuidof (Connection);try /建立数据库连接m_pConnection.CreateInstance (_uuidof (Connection);
7、m_pConnection -Open ( Provider =OraOLEDB.Oracle.1;Password= test;User ID= test;Data Source=myoracle;Persist Security Info=True , ,adModeUnknown);catch (_com_error e).CString errormessage;errormessage.Format儆据库连接失败!rn错误信息:s , e.ErrorMessage ();AfxMessageBox (errormessage);2.22.2 OCIOCI连接OracleOracleO
8、racle专门为C+提供了连接的接口OCI,它是Oracle公司提供的开发基于Oracle数据库应用程序的底层接口,全面支持Oracle的面向对象技术,具有速度快、支持第三代编程语言、对Oracle数据库的控制功能强等优点。OCI接口支持WindowsFars PDF 整理 2021.7.253系列操作系统,它所支持的C语言编译器包括Borland C+和Microsoft Visual C+等。在使用OCI开发Oracle数据库应用程序之前,应首先安装这些操 作系统和C语言编译工具。通过OCI连接数据库的步骤如下代码所示:(1)定义OCI句柄public:OCIEnv *envhp;OCIS
9、erver *srvhp;OCISvcCtx *svchp;OCIError *errhp;OCISession *authp;OCIStmt *stmthp;OCIDescribe *dschp;(2)分配句柄OCIEnvInit (&envhp,OCI_DEFAULT,0,0) 初始化环境变量:/分配效劳句柄OCIHandleAlloc ( envhp, ( void*) &srvhp,OCI_HTYPE_SERVER,0,0);/分配环境句柄OCIHandleAlloc (envhp, (void*) &svchp, OCI_HTYPE_SVCCTX,0,0);/
10、分配会话句柄OCIHandleAlloc (envhp, (void*) &authp, OCI_HTYPE_SESSION,0,0);/分配描述句柄OCIHandleAlloc (dvoid*)envhp, (dvoid*)&dschp, OCI_HTYPE_DESCRIBE,0,0);/分配语句句柄OCIHandleAlloc (dvoid*) envhp, (dvoid*) &stmthp, OCI_HTYPE_STMT,0,0);/分配错误句柄OCIHandleAlloc (envhp, (void*) &errhp, OCI_HTYPE_ERROR,0
11、,0);(3)连接数据库在本例中m_strDBName为数据库名,m_strDBName为用户名,m_strPWD为 用户密码。status =OCIServerAttach ( srvhp,errhp, ( unsigned char*) (LPCTSTR) m_strDBName, (sb4)strlen (m_strDBName) , OCI_DEFAULT);ErrorPro (errhp,OCIAttrSet (authp,OCI_HTYPE_SESSION, (void*) (LPCTSTR) m_strDBName,( ub4) strlen ( m_strUserName),
12、OCI_ATTR_USERNAME, errhp);ErrorPro (errhp,OCIAttrSet (authp,OCI_HTYPE_SESSION, ( void*) ( LPCTSTR) m_strPWD,( ub4) strlen ( m_strP WD), OCI_ATTR_PASSWORD,errhp);status=OCISessionBegin (svchp,errhp,authp,OCI_CRED_RDBMS,OCI_DEFAULT); if (status! =0)return;else AfxMessageBox(成功地连接到了效劳器);2.32.3 PROCPROC
13、方式连接OracleOraclePROC是Oracle公司提供的在第三代高级程序设计语言中嵌入SQL语句来访问数据库的一套预编译程序。利用Oracle公司提供的工具生成高级语言格式的源程序,然后就可以将这些源程序参加用户的程序中,开发出满足各种复杂要求的 优化应用程序,具有较高的执行效率。Fars PDF 整理 2021.7.254PROC在VC下开发Oracle库接口时,需要用到如下文件:(1)PROC的可执行文件PROCUI. EXE用Oracle_HOME代表Oracle安装后的根目录, 当其以缺省方式安装在计算 机的D盘时,那么Oracle_HOME位置是D: Oracle。PROC的
14、可执行文件在Oracle_HOME Ora81 BIN PROCUI.EXE。(2)Oracle支持SQL在VC环境的库文件OraSQL8. LIBOraSQL8. LIB文件在Oracle_HOME Ora81 PRECOMP LIB MSVC OraSQL8.LIB。(3)Oracle支持SQL在VC环境的头文件头文件*.h在Oracle_HOME Ora81 PRECOMP PUBLIC *h。为了方便完成用PROC在VC下开发Oracle库接口,通常将PROC集成到Visual C+ 6.0环境中,直接在C / C+环境中使用PROC预编译器来预编译应用 程序,然后进行编译和链接,最终
15、生成可执行程序。下面是PROC在Visual C+环境下连接Oracle数据库的方法。void connect ()EXEC SQL BEGIN DECLARE SECTION;struct unsigned short len; unsigned char arr 20 ; username;struct unsigned short len; unsigned char arr 10 ; password;struct unsigned short len; unsigned char arr 10 ; server;EXEC SQL END DECLARE SECTION;printf
16、( n输入用户名:);gets (username.arr);username.len = ( unsigned short) strlen ( ( char *) username.arr);printf ( n输入口 令:);gets (password.arr);password.len = ( unsigned short) strlen ( ( char *) password.arr);printf ( n输入效劳器名:);gets (server.arr);server.len= (unsigned short) strlen (char *) server.arr);/连接到O
17、racle效劳器上EXEC SQL CONNECT :username IDENTIFIED BY : password USING :server;printf ( n用户 $成功地连接到了效劳器s上!n , username.arr, server.arr); 第三讲连接方法的比拟比拟这3种方式,ADO因为是通用技术,开发起来比拟容易,通用技术的速 度太慢,如果我们要开发管理海量数据的数据库,比方影像数据库就无法胜任。OCI是一种底层接口,开发起来难度大一些,但是它的速度极快,几乎可以操纵Oracle数据库的任何对象。使用PROC进行数据库开发效率高,但要求对Oracle数据库的运行机制十
18、分了解。3.13.1数据访问应用程序接口特性OCI在开放性、可视化、Oracle的连接能力方面比拟好,但只适用于OracleFars PDF 整理 2021.7.255数据库。ADO方法由于有MFC强大的类库支持,熟悉VC编程时那么实现方便, 且可移植性强。PROC支持嵌入PL/SQL块直接调用Oracle库,将过程化语言和 非过程化语言相结合,适合熟悉Oracle数据库本身的技术人员使用。3.23.2技术特性比拟OCI和ADO在编程上采用面向对象技术,在和Oracle连接时通过调用Oracle OCI类型库来实现,应用程序在封装性、继承性和程序的再利用方面存在优势。而PROC属结构化编程语言,它直接调用Oracle SQL Lib来实现和数据库的连接,但用PROC开发出的应用程序无法向异构数据库平台移植。3.33.3性能特性PROC运行速度最快,其次是OCI,最后是ADO。因为,ADO与PROC相 比,应用程序需要经过两层才能和数据库通信接口建立联系,执行效率相对较低。Fars PDF 整理 2021.7.256参考文献1 Oracle Documentation Library (Release 8).2杨培章,马东
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东外语外贸大学南国商学院《材料测试技术》2023-2024学年第一学期期末试卷
- 广东司法警官职业学院《固体废弃物处理与处置实验》2023-2024学年第一学期期末试卷
- 广东石油化工学院《影视校色》2023-2024学年第一学期期末试卷
- 广东生态工程职业学院《现代家庭教育》2023-2024学年第一学期期末试卷
- 广东轻工职业技术学院《AutoCAD》2023-2024学年第一学期期末试卷
- 一年级数学(上)计算题专项练习集锦
- 2024八年级地理上册专项训练五中国的经济发展习题课件晋教版
- 七年级下册英语教案
- 2025年九年级统编版语文寒假预习 08 九下第六单元课预习
- 【2021届备考】2020年全国各地名校生物试题分类解析汇编:K单元-生态系统与生态环境的保护
- 基于PLC的燃油锅炉控制系统设计
- DB13T 2974-2019 信息系统集成服务资费评估指南
- 春节期间施工现场安全方案
- 黑龙江省建筑工程施工质量验收标准DB23-2017
- 自贡鸿鹤化工股份有限公司20万吨离子膜烧碱等量搬迁升级改造项目
- 医院关于成立安全生产领导小组的通知
- 【施工方案】空调百叶施工方案
- ppt模板热烈欢迎领导莅临指导模板课件(15页PPT)
- 领域驱动设计1
- 脑卒中的肠内营养支持
- 电业安全工作规程——电气部分电业安全工作规程
评论
0/150
提交评论