zoukankan      html  css  js  c++  java
  • OTL使用总结

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

     

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

    1. #define OTL_ORA10G  
    2. #include <otlv4.h>  
    3. void CAboutDlg::OnBnClickedOk()  
    4. {  
    5.     // TODO: 在此添加控件通知处理程序代码  
    6.     otl_connect OracleDb;  // 定义一个oracle数据库的连接对象  
    7.    
    8.     OracleDb.otl_initialize(TRUE);// 以线程安全模式初始化OCI环境   
    9.   
    10.     std::string szConnectString = _T("system/zjc@ORCL");    
    11.   
    12.     try    
    13.     {   
    14.         // 连接数据库  
    15.         OracleDb.rlogon(szConnectString.c_str(),1);   
    16.         // 查询数据库中所有用户  
    17.         std::string strSql = _T("select username from dba_users");    
    18.         otl_stream i(1024, // buffer size    
    19.             strSql.c_str(),    
    20.             OracleDb // connect object    
    21.             );    
    22.   
    23.         int nNumUser = 0 ;  
    24.         TCHAR szNum[64];   
    25.         while(!i.eof())// while not end-of-data    
    26.         {  
    27.             i>>szNum; //获取单个用户名  
    28.             nNumUser++;  
    29.         }  
    30.         CString strNum;  
    31.         strNum.Format(("当前oracle数据库用户个数为:%d"),nNumUser);  
    32.         AfxMessageBox(strNum);  
    33.     }    
    34.     catch (otl_exception& p)    
    35.     {    
    36.         TRACE(_T("Oracle connecterror(msg:%s, stm_text: %s, sqlstate: %s, var_info: %s)"), p.msg, p.stm_text, p.sqlstate, p.var_info);    
    37.     }    
    38.   
    39.     OnOK();  
    40. }  

           代码在WinXp+ sp2, VS 2008 + sp1,oracle 10gr2环境下测试通过。上面代码例子连接Oracle数据库用到了rlogon()函数,调用它时需要为它提供一个连接字符串,一般是这样的:

    [User Name]/[Password]@[TNS Alias]

        

            这里的TNS Alias指在tnsnames.ora中配置TNS名,比如我的tnsnames.ora里有以下的配置:

    1. # tnsnames.ora Network Configuration File: D:oracleproduct10.2.0db_1 etworkadmin nsnames.ora  
    2. # Generated by Oracle configuration tools.  
    3.   
    4. ORCL =  
    5.   (DESCRIPTION =  
    6.     (ADDRESS = (PROTOCOL = TCP)(HOST = zjc)(PORT = 1521))  
    7.     (CONNECT_DATA =  
    8.       (SERVER = DEDICATED)  
    9.       (SERVICE_NAME = orcl)  
    10.     )  
    11.   )  
    12.   
    13. EXTPROC_CONNECTION_DATA =  
    14.   (DESCRIPTION =  
    15.     (ADDRESS_LIST =  
    16.       (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))  
    17.     )  
    18.     (CONNECT_DATA =  
    19.       (SID = PLSExtProc)  
    20.       (PRESENTATION = RO)  
    21.     )  
    22.   )  

        那么TNS Alias就是ORCL。 

        此外需要注意的是使用otl连接oracle数据库需要链接oci.lib,也就是说需要包含它的头文件和库文件路径。

     

    参考文献:

    1.     在VC中使用OTL访问Oracle和程序发布

  • 相关阅读:
    UVA
    剑指offer 面试题11
    SharePoint 2013+ Sqlserver 2014 Kerberos 配置传奇, 最终的解决方案 验证。
    ASC(1)G(上升时间最长的序列)
    J2EE它是一个框架?平台?规范?
    C++和python使用struct传输二进制数据结构来实现
    前端开发面试题集(二)
    C语言中<CR>是什么意思
    Delphi ParamStr 使用方法
    打包工具 使用帮助 inno setup
  • 原文地址:https://www.cnblogs.com/lidabo/p/3435000.html
Copyright © 2011-2022 走看看