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

📄 ora8api_linux.cpp

📁 通用的数据库中间库
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	g_ora8API.OCIDefineArrayOfStruct	= (OCIDefineArrayOfStruct_t)dlsym(g_hORA8DLL, "OCIDefineArrayOfStruct");	assert(g_ora8API.OCIDefineArrayOfStruct != NULL);
	g_ora8API.OCIStmtFetch	= (OCIStmtFetch_t)dlsym(g_hORA8DLL, "OCIStmtFetch");	assert(g_ora8API.OCIStmtFetch != NULL);
	g_ora8API.OCIStmtGetBindInfo	= (OCIStmtGetBindInfo_t)dlsym(g_hORA8DLL, "OCIStmtGetBindInfo");	assert(g_ora8API.OCIStmtGetBindInfo != NULL);
	g_ora8API.OCIDescribeAny	= (OCIDescribeAny_t)dlsym(g_hORA8DLL, "OCIDescribeAny");	assert(g_ora8API.OCIDescribeAny != NULL);
	g_ora8API.OCIParamGet	= (OCIParamGet_t)dlsym(g_hORA8DLL, "OCIParamGet");	assert(g_ora8API.OCIParamGet != NULL);
	g_ora8API.OCIParamSet	= (OCIParamSet_t)dlsym(g_hORA8DLL, "OCIParamSet");	assert(g_ora8API.OCIParamSet != NULL);
	g_ora8API.OCITransStart	= (OCITransStart_t)dlsym(g_hORA8DLL, "OCITransStart");	assert(g_ora8API.OCITransStart != NULL);
	g_ora8API.OCITransDetach	= (OCITransDetach_t)dlsym(g_hORA8DLL, "OCITransDetach");	assert(g_ora8API.OCITransDetach != NULL);
	g_ora8API.OCITransCommit	= (OCITransCommit_t)dlsym(g_hORA8DLL, "OCITransCommit");	assert(g_ora8API.OCITransCommit != NULL);
	g_ora8API.OCITransRollback	= (OCITransRollback_t)dlsym(g_hORA8DLL, "OCITransRollback");	assert(g_ora8API.OCITransRollback != NULL);
	g_ora8API.OCITransPrepare	= (OCITransPrepare_t)dlsym(g_hORA8DLL, "OCITransPrepare");	assert(g_ora8API.OCITransPrepare != NULL);
	g_ora8API.OCITransForget	= (OCITransForget_t)dlsym(g_hORA8DLL, "OCITransForget");	assert(g_ora8API.OCITransForget != NULL);
	g_ora8API.OCIErrorGet	= (OCIErrorGet_t)dlsym(g_hORA8DLL, "OCIErrorGet");	assert(g_ora8API.OCIErrorGet != NULL);
	g_ora8API.OCILobAppend	= (OCILobAppend_t)dlsym(g_hORA8DLL, "OCILobAppend");	assert(g_ora8API.OCILobAppend != NULL);
	g_ora8API.OCILobAssign	= (OCILobAssign_t)dlsym(g_hORA8DLL, "OCILobAssign");	assert(g_ora8API.OCILobAssign != NULL);
	g_ora8API.OCILobCharSetForm	= (OCILobCharSetForm_t)dlsym(g_hORA8DLL, "OCILobCharSetForm");	assert(g_ora8API.OCILobCharSetForm != NULL);
	g_ora8API.OCILobCharSetId	= (OCILobCharSetId_t)dlsym(g_hORA8DLL, "OCILobCharSetId");	assert(g_ora8API.OCILobCharSetId != NULL);
	g_ora8API.OCILobCopy	= (OCILobCopy_t)dlsym(g_hORA8DLL, "OCILobCopy");	assert(g_ora8API.OCILobCopy != NULL);
	g_ora8API.OCILobDisableBuffering	= (OCILobDisableBuffering_t)dlsym(g_hORA8DLL, "OCILobDisableBuffering");	assert(g_ora8API.OCILobDisableBuffering != NULL);
	g_ora8API.OCILobEnableBuffering	= (OCILobEnableBuffering_t)dlsym(g_hORA8DLL, "OCILobEnableBuffering");	assert(g_ora8API.OCILobEnableBuffering != NULL);
	g_ora8API.OCILobErase	= (OCILobErase_t)dlsym(g_hORA8DLL, "OCILobErase");	assert(g_ora8API.OCILobErase != NULL);
	g_ora8API.OCILobFileClose	= (OCILobFileClose_t)dlsym(g_hORA8DLL, "OCILobFileClose");	assert(g_ora8API.OCILobFileClose != NULL);
	g_ora8API.OCILobFileCloseAll	= (OCILobFileCloseAll_t)dlsym(g_hORA8DLL, "OCILobFileCloseAll");	assert(g_ora8API.OCILobFileCloseAll != NULL);
	g_ora8API.OCILobFileExists	= (OCILobFileExists_t)dlsym(g_hORA8DLL, "OCILobFileExists");	assert(g_ora8API.OCILobFileExists != NULL);
	g_ora8API.OCILobFileGetName	= (OCILobFileGetName_t)dlsym(g_hORA8DLL, "OCILobFileGetName");	assert(g_ora8API.OCILobFileGetName != NULL);
	g_ora8API.OCILobFileIsOpen	= (OCILobFileIsOpen_t)dlsym(g_hORA8DLL, "OCILobFileIsOpen");	assert(g_ora8API.OCILobFileIsOpen != NULL);
	g_ora8API.OCILobFileOpen	= (OCILobFileOpen_t)dlsym(g_hORA8DLL, "OCILobFileOpen");	assert(g_ora8API.OCILobFileOpen != NULL);
	g_ora8API.OCILobFileSetName	= (OCILobFileSetName_t)dlsym(g_hORA8DLL, "OCILobFileSetName");	assert(g_ora8API.OCILobFileSetName != NULL);
	g_ora8API.OCILobFlushBuffer	= (OCILobFlushBuffer_t)dlsym(g_hORA8DLL, "OCILobFlushBuffer");	assert(g_ora8API.OCILobFlushBuffer != NULL);
	g_ora8API.OCILobGetLength	= (OCILobGetLength_t)dlsym(g_hORA8DLL, "OCILobGetLength");	assert(g_ora8API.OCILobGetLength != NULL);
	g_ora8API.OCILobIsEqual	= (OCILobIsEqual_t)dlsym(g_hORA8DLL, "OCILobIsEqual");	assert(g_ora8API.OCILobIsEqual != NULL);
	g_ora8API.OCILobLoadFromFile	= (OCILobLoadFromFile_t)dlsym(g_hORA8DLL, "OCILobLoadFromFile");	assert(g_ora8API.OCILobLoadFromFile != NULL);
	g_ora8API.OCILobLocatorIsInit	= (OCILobLocatorIsInit_t)dlsym(g_hORA8DLL, "OCILobLocatorIsInit");	assert(g_ora8API.OCILobLocatorIsInit != NULL);
	g_ora8API.OCILobRead	= (OCILobRead_t)dlsym(g_hORA8DLL, "OCILobRead");	assert(g_ora8API.OCILobRead != NULL);
	g_ora8API.OCILobTrim	= (OCILobTrim_t)dlsym(g_hORA8DLL, "OCILobTrim");	assert(g_ora8API.OCILobTrim != NULL);
	g_ora8API.OCILobWrite	= (OCILobWrite_t)dlsym(g_hORA8DLL, "OCILobWrite");	assert(g_ora8API.OCILobWrite != NULL);
	g_ora8API.OCIBreak	= (OCIBreak_t)dlsym(g_hORA8DLL, "OCIBreak");	assert(g_ora8API.OCIBreak != NULL);
	g_ora8API.OCIReset	= (OCIReset_t)dlsym(g_hORA8DLL, "OCIReset");	// assert(g_ora8API.OCIReset != NULL);
	g_ora8API.OCIServerVersion	= (OCIServerVersion_t)dlsym(g_hORA8DLL, "OCIServerVersion");	assert(g_ora8API.OCIServerVersion != NULL);
	g_ora8API.OCIAttrGet	= (OCIAttrGet_t)dlsym(g_hORA8DLL, "OCIAttrGet");	assert(g_ora8API.OCIAttrGet != NULL);
	g_ora8API.OCIAttrSet	= (OCIAttrSet_t)dlsym(g_hORA8DLL, "OCIAttrSet");	assert(g_ora8API.OCIAttrSet != NULL);
	g_ora8API.OCISvcCtxToLda	= (OCISvcCtxToLda_t)dlsym(g_hORA8DLL, "OCISvcCtxToLda");	assert(g_ora8API.OCISvcCtxToLda != NULL);
	g_ora8API.OCILdaToSvcCtx	= (OCILdaToSvcCtx_t)dlsym(g_hORA8DLL, "OCILdaToSvcCtx");	assert(g_ora8API.OCILdaToSvcCtx != NULL);
	g_ora8API.OCIResultSetToStmt	= (OCIResultSetToStmt_t)dlsym(g_hORA8DLL, "OCIResultSetToStmt");	assert(g_ora8API.OCIResultSetToStmt != NULL);

	// 8.1.x (8i) calls
	g_ora8API.OCIEnvCreate	= (OCIEnvCreate_t)dlsym(g_hORA8DLL, "OCIEnvCreate");
	g_ora8API.OCIDurationBegin = (OCIDurationBegin_t)dlsym(g_hORA8DLL, "OCIDurationBegin");
	g_ora8API.OCIDurationEnd = (OCIDurationEnd_t)dlsym(g_hORA8DLL, "OCIDurationEnd");
	g_ora8API.OCILobCreateTemporary = (OCILobCreateTemporary_t)dlsym(g_hORA8DLL, "OCILobCreateTemporary");
	g_ora8API.OCILobFreeTemporary = (OCILobFreeTemporary_t)dlsym(g_hORA8DLL, "OCILobFreeTemporary");
	g_ora8API.OCILobIsTemporary = (OCILobIsTemporary_t)dlsym(g_hORA8DLL, "OCILobIsTemporary");
}

static void ResetAPI()
{
	// 8.0.x calls
	g_ora8API.OCIInitialize	= NULL;
	g_ora8API.OCIHandleAlloc	= NULL;
	g_ora8API.OCIHandleFree	= NULL;
	g_ora8API.OCIDescriptorAlloc	= NULL;
	g_ora8API.OCIDescriptorFree	= NULL;
	g_ora8API.OCIEnvInit	= NULL;
	g_ora8API.OCIServerAttach	= NULL;
	g_ora8API.OCIServerDetach	= NULL;
	g_ora8API.OCISessionBegin	= NULL;
	g_ora8API.OCISessionEnd	= NULL;
	g_ora8API.OCILogon	= NULL;
	g_ora8API.OCILogoff	= NULL;
	g_ora8API.OCIPasswordChange	= NULL;
	g_ora8API.OCIStmtPrepare	= NULL;
	g_ora8API.OCIBindByPos	= NULL;
	g_ora8API.OCIBindByName	= NULL;
	g_ora8API.OCIBindObject	= NULL;
	g_ora8API.OCIBindDynamic	= NULL;
	g_ora8API.OCIBindArrayOfStruct	= NULL;
	g_ora8API.OCIStmtGetPieceInfo	= NULL;
	g_ora8API.OCIStmtSetPieceInfo	= NULL;
	g_ora8API.OCIStmtExecute	= NULL;
	g_ora8API.OCIDefineByPos	= NULL;
	g_ora8API.OCIDefineObject	= NULL;
	g_ora8API.OCIDefineDynamic	= NULL;
	g_ora8API.OCIDefineArrayOfStruct	= NULL;
	g_ora8API.OCIStmtFetch	= NULL;
	g_ora8API.OCIStmtGetBindInfo	= NULL;
	g_ora8API.OCIDescribeAny	= NULL;
	g_ora8API.OCIParamGet	= NULL;
	g_ora8API.OCIParamSet	= NULL;
	g_ora8API.OCITransStart	= NULL;
	g_ora8API.OCITransDetach	= NULL;
	g_ora8API.OCITransCommit	= NULL;
	g_ora8API.OCITransRollback	= NULL;
	g_ora8API.OCITransPrepare	= NULL;
	g_ora8API.OCITransForget	= NULL;
	g_ora8API.OCIErrorGet	= NULL;
	g_ora8API.OCILobAppend	= NULL;
	g_ora8API.OCILobAssign	= NULL;
	g_ora8API.OCILobCharSetForm	= NULL;
	g_ora8API.OCILobCharSetId	= NULL;
	g_ora8API.OCILobCopy	= NULL;
	g_ora8API.OCILobDisableBuffering	= NULL;
	g_ora8API.OCILobEnableBuffering	= NULL;
	g_ora8API.OCILobErase	= NULL;
	g_ora8API.OCILobFileClose	= NULL;
	g_ora8API.OCILobFileCloseAll	= NULL;
	g_ora8API.OCILobFileExists	= NULL;
	g_ora8API.OCILobFileGetName	= NULL;
	g_ora8API.OCILobFileIsOpen	= NULL;
	g_ora8API.OCILobFileOpen	= NULL;
	g_ora8API.OCILobFileSetName	= NULL;
	g_ora8API.OCILobFlushBuffer	= NULL;
	g_ora8API.OCILobGetLength	= NULL;
	g_ora8API.OCILobIsEqual	= NULL;
	g_ora8API.OCILobLoadFromFile	= NULL;
	g_ora8API.OCILobLocatorIsInit	= NULL;
	g_ora8API.OCILobRead	= NULL;
	g_ora8API.OCILobTrim	= NULL;
	g_ora8API.OCILobWrite	= NULL;
	g_ora8API.OCIBreak	= NULL;
	g_ora8API.OCIReset	= NULL;
	g_ora8API.OCIServerVersion	= NULL;
	g_ora8API.OCIAttrGet	= NULL;
	g_ora8API.OCIAttrSet	= NULL;
	g_ora8API.OCISvcCtxToLda	= NULL;
	g_ora8API.OCILdaToSvcCtx	= NULL;
	g_ora8API.OCIResultSetToStmt	= NULL;

	// 8.1.x (8i) calls
	g_ora8API.OCIEnvCreate	= NULL;
	g_ora8API.OCIDurationBegin	= NULL;
	g_ora8API.OCIDurationEnd	= NULL;
	g_ora8API.OCILobCreateTemporary	= NULL;
	g_ora8API.OCILobFreeTemporary	= NULL;
	g_ora8API.OCILobIsTemporary	= NULL;
}

void AddORA8Support()
{
	if(!g_hORA8DLL)
	{
		// load Oracle OCI8 API library
		g_hORA8DLL = ::dlopen(g_sORA8DLLName, RTLD_LAZY);
		if(!g_hORA8DLL)
			throw SAException(SA_Library_Error, -1, -1, IDS_LOAD_LIBRARY_FAILS, ::dlerror(), g_sORA8DLLName);

		LoadAPI();

		if(g_ora8API.OCIEnvCreate == NULL)	// use 8.0.x method of initialization
			g_ora8API.OCIInitialize(OCI_THREADED | OCI_OBJECT, NULL, NULL, NULL, NULL);
	}

	g_nORA8DLLRefs++;
}

void ReleaseORA8Support()
{
	assert(g_nORA8DLLRefs > 0);
	g_nORA8DLLRefs--;
	if(!g_nORA8DLLRefs)
	{
		ResetAPI();

//		dlclose(g_hORA8DLL);
		g_hORA8DLL = NULL;
	}
}

⌨️ 快捷键说明

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