OTL使用总结
来源:互联网 发布:dot.js 转amd 编辑:程序博客网 时间:2024/05/21 15:41
作者:朱金灿
来源:http://blog.csdn.net/clever101
在VC中访问Oracle,可以使用ADO或ODBC,如果你比较强大,也可以直接使用OCI API,但我个人认为OTL是最佳选择,它是一套数据库访问C++模板库,全部代码都在otlv4.h头文件中,通过OTL不但可以访问Oracle数据库(使用OCI API),还可以访问DB2,或者使用ODBC连接字符串访问其他数据库。
otl的源码只有一个头文件——otlv4.h。下面以一个例子来说明如何使用otl。
#define OTL_ORA10G#include <otlv4.h>void CAboutDlg::OnBnClickedOk(){// TODO: 在此添加控件通知处理程序代码otl_connect OracleDb; // 定义一个oracle数据库的连接对象 OracleDb.otl_initialize(TRUE);// 以线程安全模式初始化OCI环境 std::string szConnectString = _T("system/zjc@ORCL"); try { // 连接数据库OracleDb.rlogon(szConnectString.c_str(),1); // 查询数据库中所有用户std::string strSql = _T("select username from dba_users"); otl_stream i(1024, // buffer size strSql.c_str(), OracleDb // connect object ); int nNumUser = 0 ;TCHAR szNum[64]; while(!i.eof())// while not end-of-data {i>>szNum; //获取单个用户名nNumUser++;}CString strNum;strNum.Format(("当前oracle数据库用户个数为:%d"),nNumUser);AfxMessageBox(strNum);} catch (otl_exception& p) { TRACE(_T("Oracle connecterror(msg:%s, stm_text: %s, sqlstate: %s, var_info: %s)"), p.msg, p.stm_text, p.sqlstate, p.var_info); } OnOK();}
代码在WinXp+ sp2, VS 2008 + sp1,oracle 10gr2环境下测试通过。上面代码例子连接Oracle数据库用到了rlogon()函数,调用它时需要为它提供一个连接字符串,一般是这样的:
[User Name]/[Password]@[TNS Alias]
这里的TNS Alias指在tnsnames.ora中配置TNS名,比如我的tnsnames.ora里有以下的配置:
# tnsnames.ora Network Configuration File: D:\oracle\product\10.2.0\db_1\network\admin\tnsnames.ora# Generated by Oracle configuration tools.ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = zjc)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) )EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) ) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) ) )
那么TNS Alias就是ORCL。
此外需要注意的是使用otl连接oracle数据库需要链接oci.lib,也就是说需要包含它的头文件和库文件路径。
参考文献:
1. 在VC中使用OTL访问Oracle和程序发布
- OTL使用总结
- otl 使用
- 使用OTL连接Oracle
- Otl使用初步
- OTL的使用
- OTL使用问题汇总
- OTL之oralce开发总结
- OTL之Oracle开发总结
- OTL之Oracle开发总结
- OTL之Oracle开发总结
- OTL
- 使用OTL来访问数据库
- 使用OTL进行数据库编程
- 关于OTL使用的交流
- 使用OTL进行数据库编程
- C++使用OTL开发点滴
- 使用OTL进行数据库编程
- 使用OTL操作Oracle数据库
- oracle中Blob和Clob类型的区别!
- 直流调速脉冲放大 包质量
- Substring poj1226
- 简单的 C++ SOCKET编程 ---基于TCP/IP协议(转) & 双道通信
- 2012软考资料
- OTL使用总结
- hdoj_2032 杨辉三角
- Windows下编译测试BM3D算法效果
- 二分匹配的Hopcroft-Carp算法
- RPM Command: 15 Examples to Install, Uninstall, Upgrade, Query RPM Packages
- 找新朋友 + 数论
- hdu 2187 悼念512汶川大地震遇难同胞——老人是真饿了
- JavaSE 拾遗(8)——JavaSE 集合框架
- 【JAX-WS入门系列】第07章_与Tomcat集成