OTL使用总结

作者:朱金灿

来源: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和程序发布

 

原文链接: https://www.cnblogs.com/lanzhi/archive/2013/05/31/6470571.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    OTL使用总结

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/90723

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月10日 上午12:49
下一篇 2023年2月10日 上午12:49

相关推荐