博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OTL使用总结
阅读量:2430 次
发布时间:2019-05-10

本文共 1871 字,大约阅读时间需要 6 分钟。

作者:朱金灿

来源:

 

        在VC中访问Oracle,可以使用ADO或ODBC,如果你比较强大,也可以直接使用OCI API,但我个人认为OTL是最佳选择,它是一套数据库访问C++模板库,全部代码都在otlv4.h头文件中,通过OTL不但可以访问Oracle数据库(使用OCI  API),还可以访问DB2,或者使用ODBC连接字符串访问其他数据库。

 

     otl的源码只有一个头文件——otlv4.h。下面以一个例子来说明如何使用otl。

#define OTL_ORA10G#include 
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.     

 

转载地址:http://yrimb.baihongyu.com/

你可能感兴趣的文章
这是一则计算机视觉顶级会议CVPR与腾讯的爆闻,啥?
查看>>
如何用30分钟快速优化家中Wi-Fi?阿里工程师有绝招
查看>>
【C语言】C语言中常用函数源代码【strncpy ,strncat ,strncmp】
查看>>
【Java】【算法练习】题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后续遍历的结果。如果是输出yes,不是输出no,数组任意两个数字不相同。
查看>>
【Java】给定一个二叉树和其中的一个节点,请找出中序遍历的下一个节点且返回, 注意:树中的节点不仅包含左右子节点,同时包含父节点的指针。
查看>>
【Java】【多线程】—— 多线程篇
查看>>
【计算机网络】—— TCP/IP篇
查看>>
【Java】【算法】——算法篇
查看>>
【Java】【数据库】知识重点——数据库篇
查看>>
【Java】知识重点——消息队列篇
查看>>
【Java】学习总结 —— HashMap之put()方法实现原理
查看>>
【计算机网络】【TCP】如何讲清楚Tcp的三次握手和四次挥手?
查看>>
【Java】-- Java核心知识点总结
查看>>
【数据库】SQL之重点知识点总结
查看>>
【计算机网络】计算机网络知识总结
查看>>
【Java】【Web】JavaWeb相关知识总结 2018-9-17
查看>>
【数据库】突破单一数据库的性能限制——数据库-分库分表总结 2018-9-20
查看>>
Slurm——作业调度处理
查看>>
Lustre 维护
查看>>
Lustre 操作
查看>>