知识大全 VC下利用Pro*C开发Oracle接口

Posted 文件

篇首语:知识为进步之母,而进步又为富强之源泉。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 VC下利用Pro*C开发Oracle接口相关的知识,希望对你有一定的参考价值。

VC下利用Pro*C开发Oracle接口  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  摘要 本文介绍了使用Pro*C/C++在Visual C++环境下开发Oracle数据库接口程序的方法   关键词 程序设计 数据库接口程序 Oracle  概述  在Visual C++下开发Oracle库接口主要有两种方法 一种方法是利用Visual C++提供的多种数据库访问技术 如开放数据库连接ODBC 数据存取对象DAO 对象连接和嵌入数据库OLE DB和ActiveX数据对象ADO等 另一种方法是在Visual C++中嵌入SQL语句 这就是所指的Pro*C/C++(本文简称PROC) 前一种方法由于有MFC 强大的类库支持 熟悉VC编程时则实现方便 且可移植性强 但是 与PROC 相比 应用程序需要经过两层才能和数据库通信接口建立联系 编程相对复杂 执行效率相对较低 PROC支持嵌入式PL/SQL 块等直接调用Oracle 库 将过程化语言和非过程化语言相结合 形成一种更强的开发工具 可开发出满足各种复杂要求的优化应用程序 执行效率高 适合熟悉Oracle技术的人员应用 但是用PROC 开发出的应用程序无法向异构数据库平台移植   本文详细描述实际利用PROC在Visual C++环境下开发Oracle数据库接口程序的方法和具体操作步骤 并给出了编程实例 叙述以Visual C++ 版和Oracle i版为例 其他版本可根据实际情况变更  几个特殊文件  PROC在VC下开发Oracle库接口时 需要用到几个特殊文件    PROC的可执行文件PROCUI EXE  用Oracle_HOME代表Oracle安装后的根目录 当其以缺省方式安装在计算机的D盘时 则Oracle_HOME位置是D: \\ Oracle 这时PROC的可执行文件在Oracle_HOME \\ Ora \\ BIN \\ PROCUI EXE 对缺省安装即在D: \\ Oracle \\ Ora \\ BIN \\ PROCUI EXE    Oracle支持SQL在VC环境的库文件OraSQL LIB  根据以上约定 OraSQL LIB文件在Oracle_HOME \\ Ora \\ PREP \\ LIB \\ MSVC \\ OraSQL LIB 对缺省安装即在D: \\ Oracle \\ Ora \\ PREP \\ LIB \\ MSVC \\ OraSQL LIB    Oracle支持SQL在VC环境的头文件   根据以上约定 头文件 * h在Oracle_HOME \\ Ora \\ PREP \\ PUBLIC \\ * h 对缺省安装即在D: \\ Oracle \\ Ora \\ PREP \\ PUBLIC \\ * h   * h 是头文件的总称 通常有十多个 具体内容可在指定路径下查到

  将PROC集成到VC环境中  为了方便完成用PROC在VC下开发Oracle库接口 通常将PROC集成到Visual C++ 环境中 直接在C / C++环境中使用PROC预编译器来预编译应用程序 然后进行编译和链接 最终生成可执行程序 将PROC集成到VC环境中应完成如下工作    增加PROC到Tools菜单列表  a) 运行Microsoft Visual C++   b) 从菜单项Tools中选择Customize项 为表述简单起见 书写成如下格式 菜单Tools/ Customize 项 以下采用类似的表达方法 此时出现Customize对话框   c) 单击Tools选项卡(或属性页) 用鼠标移动 Menu contents 框滚动条到底部区域   d) 双击点划线矩形区域 在空白区域上输入 PROC 然后按回车键   e) 在 Command 框中 输入PROC的可执行文件名 根据 节的说明 对缺省安装即输入D: \\ Oracle \\ Ora \\ BIN \\ PROCUI EXE   f) 在 Arguments 框中输入 $(TargetName) 其作用在从菜单Tools中选择PROC项时 VC会将当前项目名传递给PROC 尔后PROC会直接打开该项目文件目录下扩展名为 pre的同名文件   g) 在 Initial directory 框中输入 $(WkspDir) / 单击 Close 按钮 完成将PROC集成到VC环境中的工作    指定头文件路径  为了确保VC顺利完成编译链接 需要将Oracle提供的头文件增加到VC环境中 指定头文件路径的具体步骤如下   a) 菜单Tools / Options项 出现 Options 对话框   b) 单击 Directories 选项卡 从 Show directories for: 列表框中选择 Include files   c) 移动 Directories 框的滚动条到底部区域   d) 双击点划线矩形区域 在空白区域上输入包含Oracle支持SQL在VC环境头文件的子目录 根据 节的说明 对缺省安装即输入D: \\ Oracle \\ Ora \\ PREP \\ PUBLIC

  VC下开发Oracle接口程序过程   创建新工程  下面叙述中 假定新建的工程名为 Exam 当运行Visual C++ 后 操作步骤如下   a) 菜单File / New项 / Project卡   b) 选择Win console Application 项   c) 由浏览选择或直接输入工程将位于的路径 / 填入创建的工程名如Exam   d) 单击OK按钮 / 依缺省值单击Finish / 单击OK 完成创建控制台应用工程框架    创建预编译源文件  假定创建的预编译源文件名为 Exam pc 在Visual C++ 的环境下操作步骤如下   a) 菜单Project / Add To Project 项 / New项   b) Files 卡 / SQL script File 项   c) Files编辑框中输入Exam pc / 单击OK   d) 在编辑状态下输入Exam pc源文件 或者 从其他文件中拷贝后再修改形成Exam pc源文件   e) 选择恰当路径 保存源文件 例如 路径为 E: \\ PROCW \\ Exam

   预编译  通过预编译 将预编译源文件如Exam pc转换成为Exam c的C程序源文件 在PROC集成到VC环境下时操作步骤如下   a) 菜单Tools / PROC 项   b) 当出现没有Exam pre 的对话框时单击OK 此时弹出PROC预编译对话框   c) 利用菜单中的加入项或单击 + 按钮 将进行预编译的源文件如Exam pc及其路径添加到预编译对话框的Input项中 即Input项中出现E: \\ PROCW \\ Exam \\ Exam pc 此时在Output项中自动显示输出文件如Exam c和路径(必要时可修改文件名和路径) 即Output项中出现E: \\ PROCW \\ Exam \\ Exam c   d) 若有需要 双击预编译对话框的Options选项处 对弹出的Options选项对话框 选择需要的预编译选项(一般情况下不做该步 即采用缺省预编译选项)   e) 单击工具条最右边的预编译图标 进行预编译   f) 预编译结束 若出现询问保存Exam pre 文件时 应选择OK进行保存 完成预编译   g) 如果预编译结束 预编译对话框左边显示的状态图标为黄色(警告)或红色(预编译失败)时 应双击该标识观察帮助或出错信息 预编译失败 应当重做 节中编辑工作 修改源程序 再进行预编译 直到通过预编译    编译准备  为了使工程能通过编译 需要将预编译输出的工程源文件和Oracle支持SQL在VC环境下的运行库文件加入到工程中 下面具体介绍增加这两个文件的步骤    ) 将预编译的输出文件加入工程  a) 菜单Project / Add To Project 项 / Files 项   b) 在文件对话框中选择正确路径(见 节和 节) 选定预编译输出的文件如Exam c 单击 打开 按钮 即将预编译输出的工程源文件加入工程    ) 将运行库文件加入工程  a) 菜单Project / Add To Project 项 / Files 项   b) 将文件对话框的文件类型改为 所有文件   c) 路径选为Oracle_HOME \\ Ora \\ PREP \\ LIB \\ MSVC   d) 选择OraSQL LIB文件 单击 打开 钮 完成将运行库文件加入工程    编译链接  a) 按F 键或单击编译图标 对工程进行编译链接 如果没有出现错误 则通过编译链接 生成可执行文件如Exam exe   b) 如果编译链接出现错误 返回到 节 选择相应的预编译源文件如Exam pc进行修改并保存 然后按 节做预编译 预编译通过后 单击OK按钮用新的 c文件代替原来的C源文件 此时重新按F 键进行编译链接 直到排除所有错误 生成可执行文件如Exam exe    运行工程  a) 按Ctrl_F 键或单击执行图标运行工程Exam exe 按工程中的提示 逐步正确运行   b) 如果运行中出现错误 返回到 节修改相应预编译源文件 再按 节做预编译 按 节进行编译链接 生成新的可执行文件 然后重新运行工程 直到正确实现工程的规定任务

   

  编程举例   程序内容  一般SQL嵌入式程序主要有说明 包含头文件 子程序声明 主程序和子程序等部分组成 在主程序中调用有关子程序 必备的子程序通常有连接到数据库子程序 断开数据库子程序 错误处理子程序和完成某项具体事务(如查询 插入 修改 删除等)的工作子程序    程序举例  下面是一完整的可通过预编译 编译链接和运行的示例程序

   /* exam pc 开发Oracle接口程序举例 *//* 说明 本程序介绍用PROC开发Oracle库接口的编程特点 通过向AUTHS* 表输入作家代码 查询作家姓名及工资 运行前应建表 插入数据并提交 */#include #include #include /* 包含SQL通讯区 它用于处理错误 */#include void connect(); /* 连接到Oracle Server */void disconnect(); /* 断开到Oracle Server的连接 */void sql_error(char *); /* 处理错误句柄 */void select(); /* 查询子程序 */extern sqlglm(char * int * int *);/* 主程序 */void main() /* 安装错误处理句柄 */ EXEC SQL WHENEVER SQLERROR DO sql_error( Oracle错误 \\n ); /* 连接到数据库 */ connect(); /* 执行查询 */ select(); /* 断开数据库连接 */ disconnect();/* 子程序 *//* 连接子程序 connect() */void connect() EXEC SQL BEGIN DECLARE SECTION; VARCHAR username[ ] password[ ] server[ ]; EXEC SQL END DECLARE SECTION; /* 输入用户名 口令以及服务器名 */ printf( \\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); /* 连接到Oracle服务器上 */ EXEC SQL CONNECT :username IDENTIFIED BY :password USING :server; printf( \\n以用户%s成功地连接到了服务器%s上!\\n username arr server arr);/* 断开连接子程序 disconnect() */void disconnect() char temp; printf( \\n是否在断开连接前提交所有事务? (Y/N) ); scanf( %c &temp); fflush(stdin); if(temp != Y && temp != y )   /* 回退事务 断开连接 */  EXEC SQL ROLLBACK WORK RELEASE;  printf( \\n回退事务 断开连接 退出程序!\\n\\n );  else   /* 提交事务 断开连接 */  EXEC SQL MIT WORK RELEASE;  printf( \\n提交事务 断开连接 退出程序!\\n\\n );  exit( ); /* 查询子程序 select()* 首先输入作家代码 然后查询作家姓名和工资 */void select() EXEC SQL BEGIN DECLARE SECTION; char author_code[ ] name[ ]; float salary; short salary_ind; EXEC SQL END DECLARE SECTION; printf( \\n输入作家代码: ); gets(author_code); /* 查询作家姓名和工资 */ EXEC SQL SELECT name salary INTO :name :salary:salary_ind  FROM auths WHERE author_code = :author_code; /* 根据指示变量的值来确定该作家的工资是否为空 */ if (salary_ind == )   printf( \\n作家代码\\t作家姓名\\t作家工资\\n );  printf( \\t \\t \\n );  printf( % s\\t% s\\t% f\\n author_code name salary);  else   printf( 作家%s的工资未录入 为空值!\\n name); /* 错误处理子程序 sql_error() */void sql_error(char *msg) char err_msg[ ]; size_t buf_len msg_len; /* 出现SQL错误 继续往下执行 */ EXEC SQL WHENEVER SQLERROR CONTINUE; printf( \\n%s\\n msg); buf_len=sizeof(err_msg); /* 调用函数sqlglm()获得错误消息 */ sqlglm(err_msg &buf_len &msg_len); printf( % *s\\n msg_len err_msg); /* 回退事务 断开连接 退出程序 */ EXEC SQL ROLLBACK RELEASE; exit(EXIT_FAILURE);

   建表和插入数据记录  上述示例程序如要正确运行 还需以Oracle库的合法用户登录 并创建AUTHS表和插入一些数据记录 建表文件 建表命令和插入数据记录的示例命令如下所述 这里叙述的工作完成后 上节生成的可执行文件才能正确运行   REM 以下为建表文件auths SQL

cha138/Article/program/Oracle/201311/17563

相关参考

知识大全 Pro*c链接oracle数据库

Pro*c链接oracle数据库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  [oracle]

知识大全 用 VC 开 发 Oracle 数 据 库 应 用 程 序

用VC开发Oracle数据库应用程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ____Or

知识大全 MySQL数据库接口的VC实现与应用(1)

MySQL数据库接口的VC实现与应用(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  引言 

知识大全 C中设置oracle环境变量

C中设置oracle环境变量  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Re:用PRO*C写

知识大全 VC++.NET开发环境整合技巧

VC++.NET开发环境整合技巧  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  主窗口内的每一个

知识大全 PB内置Oracle数据库接口的使用方法[2]

PB内置Oracle数据库接口的使用方法[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  )

知识大全 PB内置Oracle数据库接口的使用方法[1]

PB内置Oracle数据库接口的使用方法[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  P

知识大全 通过继承扩展接口

  利用继承技术可方便地为一个接口添加新的方法声明也可以将几个接口合并成一个新接口在这两种情况下最终得到的都是一个新接口如下例所示    //:HorrorShowjava  //Extendinga

知识大全 项目中的oracle开发技巧

  参与进数字公交项目已经有一个多月了我自己负责的模块也基本完成并通过测试本项目基于oracle的C/S结构涉及很多数据库方面的操作有一些经验是以前没有用到的为了留做它日参考特记录于此如果看到此文的读

鹤壁市目前开发利用的主要能源矿产是__

鹤壁市目前开发利用的主要能源矿产是_____A、石油B、天然气C、煤D、水能答案:C解析:鹤壁市是一片美丽富饶的土地,这里矿产资源储量丰富,目前开发利用的主要能源矿产煤.故选项C.符合题意。故选:C。