C++连接Oracle收藏

上传人:博****1 文档编号:478354858 上传时间:2023-12-05 格式:DOCX 页数:9 大小:19.25KB
返回 下载 相关 举报
C++连接Oracle收藏_第1页
第1页 / 共9页
C++连接Oracle收藏_第2页
第2页 / 共9页
C++连接Oracle收藏_第3页
第3页 / 共9页
C++连接Oracle收藏_第4页
第4页 / 共9页
C++连接Oracle收藏_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《C++连接Oracle收藏》由会员分享,可在线阅读,更多相关《C++连接Oracle收藏(9页珍藏版)》请在金锄头文库上搜索。

1、公告:博见反馈官方博客C+连接Oracle收藏在VisualC+下开发Oracle库接口主要有两种方法。一种方法是利用VisualC+ +提供的多种库访问技术,如开放库连接ODBC、数据存取对象DAO、对象连接和嵌入库OLEDB和ActiveX数据对象ADO等。另一种方法是在VisualC + +中嵌入SQL语句,这就是所指的 Pro*C/C+ (本文简称PROC X前一种方法由于有MFC强大的类库支持,熟悉VC编程时则实 现方便,且可移植性强;但是,与PROC相比,应用程序需要经过两层才能和数据库通信接口建 立联系,编程相对复杂,执行效率相对较低。PROC支持嵌入式PL/SQL块等直接调用O

2、racle库, 将过程化语言和非过程化语言相结合,形成一种更强的开发工具,可开发出满足各种复杂要求的优 化应用程序,即亍效率高。适合熟悉Oracle技术的人员应用。但是用PROC开发出的应用程序无法向异构库平台移植。本文详细描述实际利用PROC在VisualC+ +环境下开发Oracle数据库接口程序的方法和具体 操作步骤,并给出了编程实例。叙述以VisualC+6.0版和Oracle8i版为例,其他版本可根据实 际情况变更。几个特殊文件PROC在VC下开发Oracle库接口时,需要用到几个中寺殊文件。1、PROC的可执行文件PROCUI.EXE用OracljHOME代表Oracle安装后的根

3、目录,当其以缺省方式安装在计算机的D盘时,则 Oracle_HOME 位置是 D:Oracle。 这时 PROC 的可执行文件在 Oracle_HOMEOra81BINPROCUI.EXE 5撇省锣即在D:OradeOra81BINPROCUI.EXE。2、Oracle支持SQL在VC环境的库文件OraSQL8.LIB根 据 以 上 约 定 , OraSQL8.LIB 文 件 在 Oracle_HOMEOra81PRECOMPUBMSVCOraSQL8.UB ,对缺省安装即在 D:0racle0ra81PREC0MPLIBMSVC0raSQL8.LIB。3、Oracle支持SQL在VC环境的头

4、文件根据以上约定,头文件*.h在Oacle_HOMEOa81PRECOMPPUBUC*.h ,对缺省安装即 在 D:OracleOra81PRECOMPPUBLIC*.h。.h是头文件的总称,通常有十多个,具体内容可在指定路径下查到。将PROC集成到VC环境中为了方便完成用PROC在VC下开发Oracle库接口,通常将PROC集成到VisualC + + 6.0环 境中,直接在C/C + +环境中使用PROC预编译器来预编译应用程序,然后进行编译和链接,最终 生成可执行程序。将PROC集成到VC环境中应完成如下工作。1、增力口 PROC至ITools 睁列表a)运行 MicrosoftVisu

5、alC+ +6.0 ;b)从菜单项Tools中选择Customize项。为表述简单起见,书写成如下格式:菜单 Tools/Customize项。以下采用类似的表达方法。此时出现Customize对话框;。单击Tools选项卡(或属性页),用鼠标移动Menucontents”框滚动条到底部区域;d)双击点划线矩形区域,在空白区域上输入“PROC,然后按回车键;e)在Command框中,输入PROC的可执行文件名。根据2.1节的说明,对缺省安装即输 入 D:OracleOra81BINPROCUI.EXE ;f)在Arguments框中输入“$(TargetName)”.其作用在从菜单Tools中

6、选择PROC项时, VC会将当前项目名传递给PROC,尔后PROC会直接打开该项目文件目录下扩展名为.pre的同名 文件;g)在Initialdirectory” 框中输入 /$(WkspDir)H /单击Close”按钮,完成将 PROC 集成 到VC环境中的工作。2、指定头文件路径为了确保VC顺利完成编译链接,需要将Oracle提供的头文件增加到VC环境中。指定头文 件路径的具体步骤如下。a)菜单 Tools/Options 项,出现Options”对话框;b)单击Directories”选项卡,从Showdirectoriesfor:M 列表框中选择 Includefiles ;。移动D

7、irectories”框的滚动条到底部区域;d)双击点划线矩形区域在空白区域上输入包含Oracle支持SQL在VC环境头文件的子目录,根据2.3节的说明,对缺省安装即输入D:0racle0ra81PREC0MPPUBLIC。编程举例1、程序内容一般SQL嵌入式程序主要有说明、包含头文件、子程序声明、主程序和子程序等部分组成,库子程序、断开数据库子程序、错误在主程序中调用有关子程序。必备的子程序通常有连接到矍 处理子程序和完成某项具体事务(如查询、插入、修改、删除等)的工作子程序。2、程序举例下面是一完整的可通过预编译、编译链接和运行的示例程序。/*exam01.pc开发Oracle接口程序举例

8、*/*说明:本程序介绍用PROC开发Oracle库接口的编程特点。通过向AUTHS表输入作家代码,查询作家姓名及工资。运行前应建表、插入数据并提交。*/#include #include#include/*包含SQL通讯区,它用于处理错误。*/#includevoidconnect。;/* 连接至 ij OracleServer*/voiddisconnect。;/*断开至ij OracleServer 的连接*/ voidsql_error(cha r*);/处理错误句柄*/ voidselect。;/* 查询子程序*/ externsqlglmCcharinCjnt*);/*主程序*/vo

9、idmain()(/*安装错误处理句柄/EXECSQLWHENEVERSQLERRORDOsql_error(Orade 错误一n)/*连接到数据库*/connectO;/*执行查询*/select();/*断开数据库连接*/disconnect();)子程序*/*连接子程序connectO*/voidconnectO(EXECSQLBEGINDECLARESECTION;VARCHARusername10,password10,server10;EXECSQLENDDECLARESECTION;/输入用户名、口令以及服务器名/printf(n输入用户名:);gets(username.arr

10、);username.Ien=(unsignedshort)strlen(char*)username.arr);printf(n 输入口令:);gets(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:se

11、rver;printf(wn 以用户s 成功地连接到了服务器s 上! n,username.arr,server.arr);)/*断开连接子程序disconnectO*/voiddisconnect()(chartemp;printf(n是否在断开连接前提交所有事务? (Y/N);scanf(%c&temp);fflush (stdin);if(temp!=Y&temp! = y)(/*回退事务,断开连接。*/EXECSQLROLLBACKWORKRELEASE;printfCn回退事务,断开连接,退出程序! W);)else(/*提交事务,断开连接。*/EXECSQLCOMMITWORKRE

12、LEASE;printf(n提交事务,断开连接,退出程序! W); exit(l);)/*查询子程序select()首先输入作家代码,然后查询作家姓名和工资。VvoidselectQEXECSQLBEGINDECLARESECTION;charauthor_code8,name10;floatsalary;shortsalaryjnd;EXECSQLENDDECLARESECTION;printf(n输入作家代码);gets(author_code);/*查询作家姓名和工资/EXECSQLSELECTname,salaryINTO:name,:salary:salary_indFROMauth

13、sWHEREauthor_code=:author_code;/*根据指示变量的值来确定该作家的工资是否为空。*/if(salary_ind=O)(printf(n作家代码t作家姓名t作家工资n)printf(-ttn);printf(%8st%8st%8.2fn,author_code,name,salary);)elseprintf(作家$的工资未录入,为空值! nname);)/*错误处理子程序sqLerror()*/voidsql_error(char*msg)charerr_msg128;size_tbuf_len,msg_len;/出现SQL茴吴.继续往下执行.*/EXECSQLW

14、HENEVERSQLERRORCONTINUE;pintf(n%sn”,msg);bufjen=sizeof(err_msg);/调用函数sqlglmO获得错误消息。*/sqlglm(err_msg,&buf_len,&msg_len);printf(R%.*snmsgJenferr_msg);/*回退事务,断开连接,退出程序。/EXECSQLROLLBACKRELEASE;exit(EXIT.FAILURE);3、建表和插入要记录上述示例程序如要正确运行,还需以Oracle库的合法用户登录,并创建AUTHS表和插入一上节生成的可执行文件才能正确运行。REM以下为建表文件auths.SQLDROPTABLEauthsCASCADECONSTRAINTS /CREATETABLEauths(AUTHOR_CODEVARCHAR2(8)NOTNULL,NAMEVARCHAR2(10),BIRTHDATEDATE,ENTRY DATE TIMEDATE,SALARYNUMBER。,2), remarkVARCHAR2(255)REM下一行为在PL/SQL环境中运行建表文件的命令REME:PROCWExam01auths.sql的命令,插入后应提交(COMMIT) !REM下一行为在PL/SQL环境中向auths表

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 机械/制造/汽车 > 工业自动化

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号