C++使用oracle的occi库操作oracle数据库
来源:互联网 发布:淘宝修改我的评价 编辑:程序博客网 时间:2024/05/19 13:20
// C++使用oracle的occi库操作oracle数据库
//步骤
//1、创建OCCI上下文环境
//2、创建数据库连接
//3、创建Statement对象
//4、执行查询SQL
//5、执行插入SQL
//6、终止Statement对象
//7、断开数据库连接
//8、释放OCCI上下文环境
// 代码示例如下:
- #include <string>
- using namespace std;
- #include "occi.h"
- using namespace oracle::occi;
- int main(int argc, char *argv[])
- {
- char szUserName[40]; // 用户名
- char szPassword[40]; // 密码
- char szConnectString[256]; // 连接字符串
- Environment *pEnv = NULL; // OCCI上下文环境
- Connection *pConn = NULL; // 数据库连接
- Statement *pStmt = NULL; // Statement对象
- std::string strTemp;
- try {
- // 创建OCCI上下文环境
- pEnv = Environment::createEnvironment(
- Environment::Mode(Environment::OBJECT|Environment::THREADED_MUTEXED));
- if (NULL == pEnv) {
- printf("createEnvironment error.\n");
- return -1;
- }
- // 创建数据库连接
- pConn = pEnv->createConnection(szUserName, szPassword, szConnectString);
- if(NULL == pConn) {
- printf("createConnection error.\n");
- return -1;
- }
- // 创建Statement对象
- pStmt = pConn->createStatement();
- if(NULL == pStmt) {
- printf("createStatement error.\n");
- return -1;
- }
- //--------查询---------
- // 查询数据库时间
- ResultSet *pRs = pStmt->executeQuery(
- "SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM DUAL");
- while(pRs->next()) {
- strTemp = pRs->getString(1);
- printf("db time:%s.\n", strTemp.c_str());
- // int类型取值用getInt()
- break;
- }
- pStmt->closeResultSet(pRs);
- //--------插入---------
- // 指定DML为自动提交
- pStmt->setAutoCommit(TRUE);
- // 设置执行的SQL语句
- pStmt->setSQL("INSERT INTO TA (ID, NAME) VALUES (1, 'ZS')");
- // 执行SQL语句
- nRet = pStmt->executeUpdate();
- if(nRet == 0) {
- printf("executeUpdate insert error.\n");
- }
- //----------------------
- // 终止Statement对象
- pConn->terminateStatement(pStmt);
- // 断开数据库连接
- pEnv->terminateConnection(pConn);
- // 释放OCCI上下文环境
- Environment::terminateEnvironment(pEnv);
- }
- // 捕获数据库操作异常
- catch(SQLException &sqlExcp) {
- printf("SQLException %d:%s.\n",
- sqlExcp.getErrorCode(), sqlExcp.getMessage().c_str());
- return -1;
- }
- // 捕获其他异常
- catch(exception &ex) {
- printf("other exception %s.\n", ex.what());
- return -1;
- }
- return 0;
- }
// 连接池的用法
// 注意连接池在多线程中使用的时候,操作连接池需要加锁
// 使用连接池的时候,数据库服务器要支持才可以使用。
// 启动数据库服务器连接池
// exec dbms_connection_pool.start_pool;
- char szUserName[40]; // 用户名
- char szPassword[40]; // 密码
- char szConnectPoolString[256]; // 连接字符串
- int nMaxConn = 40; // 最大值
- int nMinConn = 5; // 初始最小值
- int nIncrConn = 1; // 每次增长值
- // 1、创建OCCI上下文环境
- Environment *pEnv = Environment::createEnvironment(
- Environment::Mode(Environment::OBJECT|Environment::THREADED_MUTEXED));
- // 2、建立连接池
- StatelessConnectionPool *pConnPool = pEnv->createStatelessConnectionPool(
- szUserName, szPassword, szConnectPoolString, nMaxConn, nMinConn, nIncrConn);
- pConnPool->setTimeOut(5000);
- // 3、从连接池获取连接
- Connection *pConn = pConnPool->getConnection(
- szUserName, szPassword, szConnectPoolString);
- // 4、释放连接到连接池
- pConn->flushCache();
- pConnPool->terminateConnection(pConn);
- // 5、释放连接池
- pEnv->terminateStatelessConnectionPool(m_pConnPool);
- // 6、释放OCCI上下文环境
- Environment::terminateEnvironment(pEnv);
// linux下编译、运行
// 1、要在.bash_profile中设置环境变量
// export ORACLE_BASE=/u01
// export ORACLE_HOME=$ORACLE_BASE/oracle
// export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
// 2、编译时加上下面的库
// libocci.so
// libclntsh.so
// -locci -lclntsh
0 0
- C++使用oracle的occi库操作oracle数据库
- C++使用oracle的occi库操作oracle数据库
- C++使用oracle的occi库操作oracle数据库
- Oracle数据库操作(OCCI方式)
- Linux下C连接Oracle数据库OCCI的若干问题
- Linux下OCCI操作Oracle数据库
- 通过OCCI操作Oracle数据库详解
- C++通过OCCI操作Oracle数据库详解
- C++通过OCCI操作Oracle数据库详解
- C++通过OCCI操作Oracle数据库详解
- C++通过OCCI操作Oracle数据库详解
- C++通过OCCI操作Oracle数据库详解
- C++通过OCCI操作Oracle数据库详解
- C++通过OCCI操作Oracle数据库详解
- 通过OCCI操作Oracle数据库详解
- 关于VS 使用 OCCI 连接Oracle 数据库的问题记录
- 使用OCCI连接Linux下Oracle数据库
- C# 使用OCCI 连接Oracle 数据库
- ed2k 中的信誉和分段机制代码梳理
- 【模板】dinic
- hdoj1007
- Leetcode - Best Time to Buy and Sell Stock
- 【模板】AC自动机
- C++使用oracle的occi库操作oracle数据库
- Android滚轮时间选择控件(可扩展自定义)
- PullDownRefreshLayout 自定义Android下拉刷新。
- eMule中的kad相关代码梳理
- R语言编码规范(Google)
- BNUOJ-50393-Carries
- android学习记录 Onclick事件监听
- Objective-C 对象进阶:归档的概念和用法
- Light oj Trailing Zeroes (III) (二分查找)