pro*C/C++支持c++开发实例
来源:互联网 发布:文明5 mac 迅雷 编辑:程序博客网 时间:2024/06/06 20:16
Pro*C/C++同时支持C和C++,但是当预编译包含C++代码的PC源程序时,必须合理地设置相关的预编译选项。
代码:xx.pc
/*功能:演示了Pro*C/C++源程序生成C++源文件说明:Pro*C/C++支持C和C++。当预编译包含C++代码的PC源程序时,必须合理地设置相关的预编译选项。预编译选项应该设置为cpp_suffix=cpp code=cpp parse=none(或partial)code = ANSI_C, KR_C, CPPparse = NONE, PARTIAL, FULLcpp_suffix = c, cpp, cc*/#include <iostream.h>#include <stdio.h>#include <string.h>#include <stdlib.h>EXEC SQL BEGIN DECLARE SECTION;// 定义宿主变量struct empdat{varchar emp_name[10];float salary;float commission;}emprec;struct empind{short emp_name_ind;short sal_ind;short comm_ind;}emprec_ind;int eno;EXEC SQL END DECLARE SECTION;class emp// 自定义类{char ename[10];float salary;float commission;public:emp();emp(empdat &dat, empind &ind);void setvalues(empdat &dat, empind &ind);friend ostream& operator<<(ostream &s, emp &e);// 定义友元函数};emp::emp(){memset(ename, 0, sizeof(ename));salary = commission = 0.0;}emp::emp(empdat &dat, empind &ind){strncpy(ename, (char*)dat.emp_name.arr, dat.emp_name.len);ename[dat.emp_name.len] = '\0';this->salary = dat.salary;this->commission = (ind.comm_ind < 0) ? 0 : dat.commission;}void emp::setvalues(empdat &dat, empind &ind){strncpy(ename, (char*)dat.emp_name.arr, dat.emp_name.len);ename[dat.emp_name.len] = '\0';this->salary = dat.salary;this->commission = (ind.comm_ind < 0) ? 0 : dat.commission;}ostream& operator <<(ostream &s, emp &e){return s<<"name: "<<e.ename<<", salary: "<<e.salary<<", comm: "<<e.commission<<endl<<endl;}#include <sqlca.h>#pragma comment(lib, "orasql10.lib") int connect(); void sql(); void sql_error();void main() { EXEC SQL WHENEVER SQLERROR DO sql_error(); // 安装错误处理句柄 if(connect() == 0) { sql(); EXEC SQL COMMIT WORK RELEASE; // 提交事务,断开连接 } else printf("连接失败\n"); } int connect() // connect to oracle database { EXEC SQL BEGIN DECLARE SECTION;// 定义宿主变量char username[10], password[10], server[10]; EXEC SQL END DECLARE SECTION; strcpy(username, "scott"); strcpy(password, "scott"); strcpy(server, "orcl"); EXEC SQL CONNECT :username IDENTIFIED BY :password USING :server; if(sqlca.sqlcode == 0) return 0; else return sqlca.sqlcode; } void sql_error() // print error infomation { printf("%.*s\n", sqlca.sqlerrm.sqlerrml, sqlca.sqlerrm.sqlerrmc); } void sql(){ emp e;while(1){cout<<"请输入雇员号(0:退出):";flush(cout);scanf("%d", &eno);fflush(stdin);if(eno == 0)return;EXEC SQL WHENEVER NOT FOUND goto notfound; // 游标数据提取完毕后退出循环 EXEC SQL select ename, sal, comm into :emprec indicator :emprec_ind from emp where empno=:eno;e.setvalues(emprec, emprec_ind);cout<<e;continue;notfound:cout<<"无效雇员号"<<endl<<endl;} printf("sqlca.sqlerrd[2] = %d\n", sqlca.sqlerrd[2]); // sqlca.sqlerrd[2]存放着Select语句作用的行数 }
xx.pc文件对应的预编译选项如图:
- pro*C/C++支持c++开发实例
- PRO*C
- Pro*c
- 用Pro*C开发多线程应用程序
- 用Pro*C开发多线程应用程序
- 用Pro*C开发多线程应用程序
- ProC实例-Linux下的Oracle Pro*C应用程序实例
- Pro*C对inner join的支持情况
- Pro*C的使用
- Pro * C 的使用
- Pro*C快速上手
- Pro*C 程序概述
- Pro * C 的使用
- Pro*C的使用
- pro*c 编程学习
- 什么是Pro*C/C++
- Pro*C概述
- Pro*C的使用
- sql中的Update语句为什么不能用表的别名
- 20个开发人员非常有用的Java功能代码
- 二单元three
- android开发googlemap时出现的问题
- zabbix-1.8.7版本安装与1.8.4的区别
- pro*C/C++支持c++开发实例
- ext4.0
- linux socket编程的异常原因及处理
- 字符编解码的故事(ASCII,ANSI,Unicode,Utf-8)
- Qt 第六章 FindDialog和三种布局。
- c++ 重载 覆盖 隐藏的区别和执行方式
- J2SE 1.5新特性之For循环
- VC++中的各种文件各起的是什么做用?
- 计算机视觉方向的一些顶级会议和期刊