




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、公告:音见反馈官方博客C+ +连接Oracle收藏在VisualC+下开发Oracle库接口主要有两种方法。一种方法是利用VisualC+ +提供的多种库访问技术,如开放i库连接ODBC、数据存取对象DAO、对象连接和嵌入库OLEDB和ActiveX数据对象ADO等。另一种方法是在VisualC + +中嵌入SQL语句,这就是所指的 Pro*C/C+ (本文简称PROC X前一种方法由于有MFC强大的类库支持,熟悉VC编程时则实 现方便,且可移植性强;但是,与PROC相比,应用程序需要经过两层才能和数据库通信接口建 立联系,编程相对复杂,执行效率相对较低。PROC支持嵌入式PL/SQL块等直接
2、调用Oracle库, 将过程化语言和非过程化语言相结合,形成一种更强的开发工具,可开发出满足各种复杂要求的优 化应用程序,拥亍效率高。适合熟悉Oracle技术的人员应用。但是用PROC开发出的应用程序无法向异构库平台移植。本文详细描述实际利用PROC在VisualC+ +环境下幵发Oracle数据库接口程序的方法和具体 操作步骤,并给岀了编程实例。叙述以VisualC+6.0版和OracleBi版为例,其他版本可根据实 际情况变更。几个特殊文件PROC在VC下开发Oracle库接口时,需要用到几个特殊文件。1、PROC的可执行文件PROCUI.EXE用Oracle_HOME代表Oracle安装
3、后的根目录,当其以缺省方式安装在计算机的D盘时,则 Oracle_HOME 位置是 D:Oracle。 这时 PROC 的可执行文件在 Oracle_HOMEOra81BINPROCUI.EXE 对缺省安装即在D:OracleOra81BINPROCUI.EXE.2、Oracle支捋SQL在VC环境的库文件OraSQL8.UB根 据 以 上 约 定 , OraSQL8.UB 文 件 在 Oracle_HOMEOra81PRECOMPUBMSVCOraSQL8.UB ,对缺省安装即在 D:OradeOra81PRECOMPLIBMSVCOvSQL8 丄 IB。3、Oracle支持SQL在VC环境
4、的头文件根据以上约定,头文件th在 6acle_HOMEOra81PRECOMPPUBUC*.h ,对缺省安装即 在 D:0racle0ra81PREC0MPPUBLICth。.h是头文件的总称,通常有十多个,具体内容可在指定路径下查到。将PROC集成到VC环境中为了方便完成用PROC在VC下开发Oracle库接口 ,通常将PROC集成到VisualC + + 6.0环 境中,直接在C/C + +环境中使用PROC预编译器来预编译应用程序,然后进行编译和链接,最终 生成可执行程序。将PROC隼成到VC坏境中应完成如下工作。1、增加PROC到Tools菜单列表a)运行 MicrosoftVisu
5、alC+ +6.0 ;b)从菜单项Tools中选择Customize项。为表述简单起见,书写成如下格式:菜单 Tools/Customize项。以下采用类似的表达方法。此时出现Customize对话框;c)单击Tools选项卡(或属性页),用鼠标移动"Menucontents"框滚动条到底部区域;d)双击点划线矩形区域,在空白区域上输入"PROC",然后按回车键;e)在"Command"框中,输入PROC的可执行文件名。根据2.1节的说明,对缺省安装即输 入 D:OracleOra81BINPROCUI.EXE ;f)在"A
6、rguments"框中输入"$(TargetName)"。其作用在从菜单Tools中选择PROC项时, VC会将当前项目名传递给PROC,尔后PROC会直接打开该项目文件目录下扩展名为.pre的同名 文件;g)在"Initialdirectory” 框中输入"$(WkspDir)" /单击"Close"按钮,完成将 PROC 集成 到VC环境中的工作。2、指定头文件路径为了确保VC顺利完成编译链接,需要将Oracle提供的头文件增加到VC坏境中。指定头文 件路径的具体步骤如下。a)菜单 Tools/Options
7、项,出现"Options"对话框;b)单击"Directories"选项卡,从"Showdiectoriesfor:"列表框中选择"Includefiles"c)移动"Directories"框的滚动条到底部区域;d)双击点划线矩形区域在空白区域上输入包含Oacle支持SQL在VC环境头文件的子目录, 根据2.3节的说明,对缺省安装即输入D:OvcleOv81PRECOMPPUBUC。编程举例1、程序内容般SQL嵌入式程序主要有说明、包含头文件、子程序声明、主程序和子程序等部分组成,在主程序中调
8、用有关子程序。必备的子程序通常有连接到娄库子砸断开数据库子衝、衙吴处理子程序和完成某项具体事务(如查询、插入、修改、删除等)的工作子程序。2、程序举例下面是一完整的可通过预编译、编译链接和运行的示例程序。/*exam01.pc开发Oracle接口程序举例背/厂说明:本程序介绍用PROC开发Oracle库接口的编程特点。通过向AUTHS,表输入作家代码,查询作家姓名及工资。运行前应建表、插入数据并提交。*/ # include<stdio.h> # include<stri ng.h>#include<stdlib.h>厂包含SQL通讯区,它用于处理错误。*/
9、#in clude<sqlca.h>voidconnectO;/* 连接到 OracleServer*/ voiddisconnect();/*®rjf到 OracleServer 的连接*7 voidsql_error(cha广);厂处理错误句柄*/ voidselect();/* 查询子程序*/ externsqlglmCcharinCjnt*);厂主程序*/voidmain()厂安装错误处理句柄*/EXECSQLWHENEVERSQLERRORDOsql_error("Oracle 错误rT);厂连接到数据库*/connectO;厂执行查询*/select
10、();厂断开数据库连接*/disconnect();厂子程序*/厂连接子程序connectO*/voidconnectOEXECSQLBEGINDECLARESECTION;VARCHARusername10,password10,server10;EXECSQLENDDECLARESECTION;厂输入用户名、口令以及服务器名*/printf("n输入用户名:');gets(username.arr);username.Ien=(unsignedshort)strlen(char*)username.arr);printf("n 输入口令:");gets
11、(password.arr);password.Ien=(unsignedshort)strlen(char*)password.arr);printf("n输入服务器名:');gets(server.arr);server.len=(unsignedshort)strlen(char*)server.arr);厂连接到Oracle服务器上*/EXECSQLCONNECT:usernameIDENTIFIEDBY:passwordUSING:server;printf(wn 以用户s 成功地连接到了服务器s_t ! n",username.arr,server.ar
12、r);厂断开连接子程序disconnectO*/voiddisconnect()chartemp;printf("n是否在断开连接前提交所有事务? (Y/N)");scanf("%c&temp);fflush (stdin);if(temp!='Y'&&temp!二'y')厂回退事务,断开连接。*/EXECSQLROLLBACKWORKRELEASE;printf('n回退事务,断开连接,退出程序! W);else厂提交事务,断开连接。*/EXECSQLCOMMITWORKRELEASE;printf
13、(-n提交事务,断开连接,退出程序! W); exit(l);厂查询子程序select()首先输入作家代码,然后查询作家姓名和工资。VvoidselectQEXECSQLBEGINDECLARESECTION;charauthor_code8,name10;floatsalary;shortsalaryjnd;EXECSQLENDDECLARESECTION;printf("n输入作家代码:J;gets(author_code);厂查询作家姓名和工资*/EXECSQLSELECTname,salaryINTO:name,:salary:salary_indFROMauthsWHERE
14、author_code=:author_code;厂根据指示变量的值来确定该作家的工资是否为空。*/if(salary_ind=O)printf('n作家代码t作家姓名t作家工资W);printf("ttn");printf('%8st%8st%8.2fn',author_code,name,salary);elseprintf(作家$的工资未录入,为空值! nname);厂错误处理子程序sqLerror()*/voidsql_error(char*msg)charerr_msg128;size_tbuf_len,msg厂出现SQL错误.继续往下执行
15、*/EXECSQLWHENEVERSQLERRORCONTINUE; printf("n%sn",msg);bufjen=sizeof(err_msg);厂调用函数sqlglmO获得错误;肖息。*/sqlglm(err_msg,&buf_ler&msgen); printf(n%.*snmsgerberr_msg);厂回退事务,断开连接,退出程序。7EXECSQLROLLBACKRELEASE;exit(EXITJAILURE);3.建表和插入娄记录上述示例程序如要正确运行,还需以Oracle库的合法用户登录,并创建AUTHS表和插入一记录。建表文件、建表命
16、令和插入数据记录的示例命令如下所述。这里叙述的工作完成后, 上节生成的可执行文件才能正确运行。REM以下为建表文件auths.SQLDROPTABLEauthsCASCADECONSTRAINTSCREATETABLEauths(AUTHOR_CODEVARCHAR2(8)NOTNULL,NAMEVARCHAR2(10),BIRTHDATEDATE,ENTRY DATE TIMEDATE,SALARYNUMBER(7,2),remarkVARCHAR2(255)REM下一行为在PL/SQL环境中运行建表文件的命令REME!PROCWExam01auths.sql的命令,插入后应提交(COMMIT) !REM下一行为在PL/SQL坏境中向auths表插人REMINSERTINTOauths(author_code,name,salary)VALUES(,A00001,;lW,1200);发表于
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 民爆物品事故试题及答案
- 历年保育圆试题及答案
- 如何撰写有效的公共政策试题及答案
- 生态环境保护法规考试重点
- 计算机三级软件测试的新技术应用试题及答案
- 软件设计师考试的个性化备考方案试题及答案
- 设计师如何有效应对变化需求及试题与答案
- 强化技能训练的信息系统项目管理师试题及答案
- 城市化进程中的公共政策试题及答案
- 软考网络工程师模拟测试与试题及答案
- 2021女性压力性尿失禁诊断和治疗指南(全文)
- 漆艺课件教学课件
- 第六章 方差分析课件
- 班主任工作经验交流:在班级管理中要尊重、关爱学生班主任班级管理方案
- 《PLC应用技术(西门子S7-1200)第二版》全套教学课件
- 2024年成人高考成考(高起专)语文试题与参考答案
- 《高危新生儿分类分级管理专家共识(2023)》解读
- iso220002024食品安全管理体系标准
- 2025高考物理步步高同步练习选修1第一章 动量章末检测试卷(一)含答案
- 军人优待金委托书
- 2024年广东省广州市中考英语试卷附答案
评论
0/150
提交评论