C++通过OCCI操作Oracle数据库详解
2015-12-27 20:46
447 查看
HelloOracle.cpp
Employees.cpp
main.cpp
#include <iostream> #define LINUXOCCI //避免函数重定义错误 #include <occi.h> using namespace std; using namespace oracle::occi; #pragma comment(lib,"E:\\app\\Administrator\\product\\11.2.0\\dbhome_2\\OCI\\lib\\MSVC\\oci.lib") #pragma comment(lib,"E:\\app\\Administrator\\product\\11.2.0\\dbhome_2\\OCI\\lib\\MSVC\\oraocci11.lib") int mainBak() { Environment *env=Environment::createEnvironment(Environment::DEFAULT); cout<<"success"<<endl; string name = "scott"; string pass = "tiger"; string srvName = "127.0.0.1:1521/orcl"; try { Connection *conn = env->createConnection(name, pass); cout<<"conn success"<<endl; env->terminateConnection(conn); } catch(SQLException e) { cout<<e.what()<<endl; return -1; } Environment::terminateEnvironment(env); cout<<"end!"<<endl; return 0; } /* success conn success end! 请按任意键继续. . . */
</pre><pre name="code" class="cpp">
</pre><p></p><p>Employees.h</p><p><pre name="code" class="cpp">//Employees.h //复制代码 /* * A simple OCCI test application * This file contains the Employees class declaration */ #include <iostream> #include <occi.h> #include <iomanip> using namespace oracle::occi; using namespace std; class Employees { public: Employees(); virtual ~Employees(); void List(); private: Environment *env; Connection *con; string user; string passwd; string db; };
Employees.cpp
#include "Employees.h" Employees::Employees() { /* 69 * connect to the test database as the HR 70 * sample user and use the EZCONNECT method 71 * of specifying the connect string. Be sure 72 * to adjust for your environment! The format 73 * of the string is host:port/service_name 74 */ user = "scott"; passwd = "tiger"; db = "127.0.0.1:1521/orcl"; env = Environment::createEnvironment(Environment::DEFAULT); try { con = env->createConnection(user, passwd, db); } catch (SQLException& ex) { cout << ex.getMessage(); exit(EXIT_FAILURE); } } Employees::~Employees() { env->terminateConnection (con); Environment::terminateEnvironment (env); } void Employees::List() { /* 104 * simple test method to select data from 105 * the employees table and display the results 106 */ Statement *stmt = NULL; ResultSet *rs = NULL; string sql = "select EMPNO, ENAME, JOB " \ "from EMP order by EMPNO"; try { stmt = con->createStatement(sql); } catch (SQLException& ex) { cout << ex.getMessage(); } if (stmt) { try { stmt->setPrefetchRowCount(32); rs = stmt->executeQuery(); } catch (SQLException& ex) { cout << ex.getMessage(); } if (rs) { cout << endl << setw(8) << left << "EMPNO" << setw(22) << left << "ENAME" << setw(27) << left << "JOB" << endl; cout << setw(8) << left << "======" << setw(22) << left << "====================" << setw(27) << left << "=========================" << endl; while (rs->next()) { cout << setw(8) << left << rs->getInt(1) << setw(22) << left << (rs->isNull(2) ? "n/a" : rs->getString(2)) << setw(27) << left << rs->getString(3) << endl <<"-----------------------------------------"<<endl; //<< endl; //cout<<"-----------------------------------------"<<endl; } cout << endl; stmt->closeResultSet(rs); } con->terminateStatement(stmt); } }
main.cpp
#include "Employees.h" using namespace std; using namespace oracle::occi; int main (void) { /* 48 * create an instance of the Employees class, 49 * invoke the List member, delete the instance, 50 * and prompt to continue... 51 */ Employees *pEmployees = new Employees(); pEmployees->List(); cout << "ENTER to continue..."; cin.get(); delete pEmployees; return 0; }
相关文章推荐
- Oracle中常用的sql操作
- ORACLE基本操作
- Oracle复习之第二章
- ORACLE——日期时间格式化参数详解
- Linux下Oracle的启动和关闭
- 【已解决】安装oracle11g弹出java.lang.nullPointException
- 【oracle】使用oracle常见错误汇总
- NoSQL数据库和oracle数据库等一些问题的收集
- Centos6.5_x86上Oracle11g2 32位的安装与卸载以及相关问题汇总
- Oracle日常维护中管理用户以及重做日志文件的方法
- Oracle数据库中表空间的基本管理操作小结
- Oracle执行计划顺序
- Oracle执行计划详解
- EF:打开Oracle连接时报错
- Oracle数据库中的控制文件管理以及常用参数设置
- Oracle数据库中的基本建库操作详解
- ORACLE中表死锁的处理
- Oracle GoldenGate for Big Data 12.2.0.1的新特性
- Linux系统下Oracle数据库的安装和启动关闭操作教程
- JDBC_使用ResultSet 执行查询操作(基于oracle数据库)