学习《实战OpenGL》之OCI接口连接Oracle数据库初探

本文介绍了在Visual Studio 2008环境下,通过OCI接口连接并操作Oracle数据库的过程。从配置环境到编写代码实现数据库连接,包括头文件引用、句柄声明、错误处理函数、MFC对话框控件的使用,以及解决编译错误。最终虽然成功执行SQL,但因专注于连接部分,未深入研究数据在list control中的显示问题。
摘要由CSDN通过智能技术生成

    在安装好Oracle之后,开始用OCI编程。VS2008作为开发平台

    首先在安装目录下搜到 oci.dll oci.h oci.lib等文件。同OpenGL一样*.lib放到VS2008的安装目录下vc\lib *.h放到vc\include下,*.dll放到C:\WINDOWS/SYSTEM32下。

    照《实战OpenGL》创建一个MFC基于对话框的工程。

    在stdafx.h中加上oci.h的引用:#include <oci.h> 其他头文件会由oci.h进行调用。

添加变量包括OCI连接数据库的各种句柄

public:
	OCIEnv		*envhp ; 		//环境句柄
	OCIServer	*srvhp ; 		//服务器句柄
	OCISvcCtx	*svchp ; 		//服务环垅句柄
	OCIError	*errhp ; 		//错误句柄
	OCISession	*authp ; 		//会话句柄
	OCIStmt 	*stmthp ; 		//语句句柄
	OCIDescribe  *dschp ; 		//描述句柄

添加错误处理函数:

void COCIExampleDlg::ErrorProc(dvoid *err, sword status)
{
	sb4 errcode ; 		//存储错误代码
	CString str ; 	 	//显示错误信息
	text errbuf [512] ; 	//存储错误信息
	if (status==OCI_ERROR)	//如果出错
	{
		//调用OCI的错误获取函数
		OCIErrorGet ((dvoid*)errhp , (ub4 )1 , NULL , &errcode , errbuf , (ub4) sizeof (errbuf) , OCI_HTYPE_ERROR ) ; 
		str.Format ("错误号:%d\n错误信息:%s\n" , errcode , errbuf ) ; 
		AfxMessageBox (str  ) ;  //弹出消息框 , 显示错误信息
	}

}

对话框中添加两个button,一个list control 进行数据的显示。

为了关联对话框的list control在OCIExampleDlg.h中定义

// 对话框数据
	enum { IDD = IDD_OCIEXAMPLE_DIALOG };
         CListCtrl    m_grid ;

在OCIExampleDlg.cpp中定义

void COCIExampleDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_LIST1, m_grid);
}

连接数据库的button中写上连接及执行数据库的核心代码

void COCIExampleDlg::OnBnClickedButton1()
{
	//初始化OCI环境
	OCIEnvInit (& envhp , OCI_DEFAULT , 0 , 0 ) ; 
	// 	☆程序第Ⅰ部分☆《分配句柄与数据结构》 
	//分配错误句柄
	OCIHandleAlloc (envhp , (dvoid**)&errhp , OCI_HTYPE_ERROR , 0 , 0 ) ; 	
	//分配服务器句柄
	ErrorProc (errhp , OCIHandleAlloc (envhp , ( dvoid** )&srvhp , OCI_HTYPE_SERVER , 0 , 0) ) ;  		
	//分配服务环境句柄
	ErrorProc (errhp , OCIHandleAlloc (envhp, (dvoid**)&svchp ,OCI_HTYPE_SVCCTX ,0 , 0)) ;  
	//分配会话句柄
	ErrorProc (errhp  , OCIHandleAlloc (envhp , (dvoid**)&authp , OCI_HTYPE_SESSION , 0 , 0) ) ; 	
	//分配描述句柄
	ErrorProc (errhp  , OCIHandleAlloc ((dvoid*)envhp , (dvoid**)&am
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值