⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 orabase.h

📁 C++OCI,针对8.0.4以上的数据库
💻 H
字号:
// OraBase.h: interface for the COraBase class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_ORABASE_H__6E314B74_8C4E_4C05_85D9_9A38CE825B42__INCLUDED_)
#define AFX_ORABASE_H__6E314B74_8C4E_4C05_85D9_9A38CE825B42__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <oci.h>
#include <ctype.h>
#include <oratypes.h>
#include <ocidfn.h>
#include <ocikpr.h>
#include <ociapr.h>
#include "Error.h"

//ORACLE的访问句柄  
typedef struct _OCI_HANDLE
{
	Lda_Def    *pLdaDef;      //用于7.0以上版本的与oracle数据库打交道的指针。
	OCIEnv     *phEnv;        //环境句柄,要使用oracle数据库,必须首先获得环境句柄
	OCISvcCtx  *phService;    //oracle的服务句柄,也可以说是连接句柄。
	OCIError   *phErr;        //oracle的错误句柄
	OCIStmt    *phStmt;       //oracle的语句描述句柄
	OCIServer  *phServer;     //Oracle的服务器句柄
	OCISession *phSession;    //Oracle会话句柄
	
	bool      bLdaDefInit;  //pLdaDef是否已经存在,有效
	bool      bEnvInit;     //环境句柄是否有效
	bool      bSvcInit;     //服务句柄是否有效
	bool      bErrInit;     //错误句柄是否有效
	bool      bStmtInit;    //语句描述句柄是否有效
	bool      bSrvInit;     //服务器句柄是否有效
	bool      bSessionInit; //会话句柄是否有效,不是会话是否有效
}OCIHANDLE, *LPOCIHANDLE;

//Oracle的基类,只包含oracle的登录信息,oracle的版本
class COraBase  
{
public:
	COraBase();
	virtual ~COraBase();
public:
	int OCILogout(OCIHANDLE hOCI);
	//获取Oracle的错误信息
	int GetOCIErrInfo(OCIError *phOCIErr, int &nErrCode, char *pszOCIErrInfo, int nOCIErrInfoLen);
	//释放OCI的句柄空间,但是共享内存依然存在
	void OCIFree(OCIHANDLE hOCI);
	//使一个OCI进程与共享内存分离,也是结束该进程
	int OCITerminateProcMemory();
	//8I版本以上的初始化函数
	int OCIInit();
	//登录函数,分7.3.3、8I以上的版本
	int OCILogin(char* pszHost, char* pszPort, char* pszUID, char* pszPWD, bool bVersion);

	OCIHANDLE m_hOCI;
	char m_szOCIErrInfoArr[ERRINFO_MAX_LEN]; //错误信息
	int m_nErrCode; //错误号
protected:
	//登录函数,针对7.3.3以上的版本
	int OCILogin(char* pszHost, char* pszUserName, char* pszPassWord);
	//登录函数,针对8.0.4以上的数据库
	int OCILogin(char* pszHost, char* pszPort, char* pszUserName, char* pszPassWord);
private:
	bool m_bOCIInit; //看看OCI的环境是否已经被初始化
};

#endif // !defined(AFX_ORABASE_H__6E314B74_8C4E_4C05_85D9_9A38CE825B42__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -