pro*C/C++支持c++开发实例
生活随笔
收集整理的這篇文章主要介紹了
pro*C/C++支持c++开发实例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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++开发实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 超级终端连接华为交换机_win8系统教你
- 下一篇: Windows常用运行库--VC++、D