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

📄 infapi_linux.cpp

📁 通用的数据库中间库
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// infAPI.cpp
//
//////////////////////////////////////////////////////////////////////

#include <SQLAPI.h>
#include <infAPI.h>

#include <assert.h>

#include "samisc.h"
#include "errmsg.h"
#include <dlfcn.h>
static const char *g_sInfDLLName1 = "libifcli.so";
static const char *g_sInfDLLName2 = "iclit09a.so";
static void* g_hInfDLL = NULL;
long g_nInfDLLVersionLoaded = 0;
static long g_nInfDLLRefs = 0;

// API definitions
infAPI g_infAPI;

infAPI::infAPI()
{
	SQLAllocConnect = NULL;		// 1.0
	SQLAllocEnv = NULL;			// 1.0
	SQLAllocHandle = NULL;		// 3.0
	SQLAllocStmt = NULL;		// 1.0
	SQLBindCol = NULL;			// 1.0
	SQLBindParameter = NULL;	// 2.0
	SQLBrowseConnect = NULL;	// 1.0
	SQLBulkOperations = NULL;	// 3.0
	SQLCancel = NULL;			// 1.0
	SQLCloseCursor = NULL;		// 3.0
	SQLColAttribute = NULL;		// 3,0
	SQLColAttributes = NULL;	// 1.0
	SQLColumnPrivileges = NULL;	// 1.0
	SQLColumns = NULL;			// 1.0
	SQLConnect = NULL;			// 1.0
	SQLCopyDesc = NULL;			// 3.0
	SQLDataSources = NULL;		// 1.0
	SQLDescribeCol = NULL;		// 1.0
	SQLDescribeParam = NULL;	// 1.0
	SQLDisconnect = NULL;		// 1.0
	SQLDriverConnect = NULL;	// 1.0
	SQLDrivers = NULL;			// 2.0
	SQLEndTran = NULL;			// 3.0
	SQLError = NULL;			// 1.0
	SQLExecDirect = NULL;		// 1.0
	SQLExecute = NULL;			// 1.0
	SQLExtendedFetch = NULL;	// 1.0
	SQLFetch = NULL;			// 1.0
	SQLFetchScroll = NULL;		// 1.0
	SQLForeignKeys = NULL;		// 1.0
	SQLFreeConnect = NULL;		// 1.0
	SQLFreeEnv = NULL;			// 1.0
	SQLFreeHandle = NULL;		// 3.0
	SQLFreeStmt = NULL;			// 1.0
	SQLGetConnectAttr = NULL;	// 3.0
	SQLGetConnectOption = NULL;	// 1.0
	SQLGetCursorName = NULL;	// 1.0
	SQLGetData = NULL;			// 1.0
	SQLGetDescField = NULL;		// 3.0
	SQLGetDescRec = NULL;		// 3.0
	SQLGetDiagField = NULL;		// 3.0
	SQLGetDiagRec = NULL;		// 3.0
	SQLGetEnvAttr = NULL;		// 3.0
	SQLGetFunctions = NULL;		// 1.0
	SQLGetInfo = NULL;			// 1.0
	SQLGetStmtAttr = NULL;		// 3.0
	SQLGetStmtOption = NULL;	// 1.0
	SQLGetTypeInfo = NULL;		// 1.0
	SQLMoreResults = NULL;		// 1.0
	SQLNativeSql = NULL;		// 1.0
	SQLNumParams = NULL;		// 1.0
	SQLNumResultCols = NULL;	// 1.0
	SQLParamData = NULL;		// 1.0
	SQLParamOptions = NULL;		// 1.0
	SQLPrepare = NULL;			// 1.0
	SQLPrimaryKeys = NULL;		// 1.0
	SQLProcedureColumns = NULL;	// 1.0
	SQLProcedures = NULL;		// 1.0
	SQLPutData = NULL;			// 1.0
	SQLRowCount = NULL;			// 1.0
	SQLSetConnectAttr = NULL;	// 3.0
	SQLSetConnectOption = NULL;	// 1.0
	SQLSetCursorName = NULL;	// 1.0
	SQLSetDescField = NULL;		// 3.0
	SQLSetDescRec = NULL;		// 3.0
	SQLSetEnvAttr = NULL;		// 3.0
	SQLSetParam = NULL;			// 1.0
	SQLSetPos = NULL;			// 1.0
	SQLSetScrollOptions = NULL;	// 1.0
	SQLSetStmtAttr = NULL;		// 3.0
	SQLSetStmtOption = NULL;	// 1.0
	SQLSpecialColumns = NULL;	// 1.0
	SQLStatistics = NULL;		// 1.0
	SQLTablePrivileges = NULL;	// 1.0
	SQLTables = NULL;			// 1.0
	SQLTransact = NULL;			// 1.0
}

infConnectionHandles::infConnectionHandles()
{
	m_hevn = NULL;
	m_hdbc = NULL;
}

infCommandHandles::infCommandHandles()
{
	m_hstmt = NULL;
}

static void LoadAPI()
{
	g_infAPI.SQLAllocConnect		= (SQLAllocConnect_t)dlsym(g_hInfDLL, "SQLAllocConnect");		//assert(g_infAPI.SQLAllocConnect != NULL);
	g_infAPI.SQLAllocEnv			= (SQLAllocEnv_t)dlsym(g_hInfDLL, "SQLAllocEnv");				//assert(g_infAPI.SQLAllocEnv != NULL);
	g_infAPI.SQLAllocHandle			= (SQLAllocHandle_t)dlsym(g_hInfDLL, "SQLAllocHandle");			//assert(g_infAPI.SQLAllocHandle != NULL);
	g_infAPI.SQLAllocStmt			= (SQLAllocStmt_t)dlsym(g_hInfDLL, "SQLAllocStmt");				//assert(g_infAPI.SQLAllocStmt != NULL);
	g_infAPI.SQLBindCol				= (SQLBindCol_t)dlsym(g_hInfDLL, "SQLBindCol");					assert(g_infAPI.SQLBindCol != NULL);
	g_infAPI.SQLBindParameter		= (SQLBindParameter_t)dlsym(g_hInfDLL, "SQLBindParameter");		assert(g_infAPI.SQLBindParameter != NULL);
	g_infAPI.SQLBrowseConnect		= (SQLBrowseConnect_t)dlsym(g_hInfDLL, "SQLBrowseConnect");		assert(g_infAPI.SQLBrowseConnect != NULL);
	g_infAPI.SQLBulkOperations		= (SQLBulkOperations_t)dlsym(g_hInfDLL, "SQLBulkOperations");	//assert(g_infAPI.SQLBulkOperations != NULL);
	g_infAPI.SQLCancel				= (SQLCancel_t)dlsym(g_hInfDLL, "SQLCancel");					assert(g_infAPI.SQLCancel != NULL);
	g_infAPI.SQLCloseCursor			= (SQLCloseCursor_t)dlsym(g_hInfDLL, "SQLCloseCursor");			//assert(g_infAPI.SQLCloseCursor != NULL);
	g_infAPI.SQLColAttribute		= (SQLColAttribute_t)dlsym(g_hInfDLL, "SQLColAttribute");		//assert(g_infAPI.SQLColAttribute != NULL);
	g_infAPI.SQLColAttributes		= (SQLColAttributes_t)dlsym(g_hInfDLL, "SQLColAttributes");		//assert(g_infAPI.SQLColAttributes != NULL);
	g_infAPI.SQLColumnPrivileges	= (SQLColumnPrivileges_t)dlsym(g_hInfDLL, "SQLColumnPrivileges");assert(g_infAPI.SQLColumnPrivileges != NULL);
	g_infAPI.SQLColumns				= (SQLColumns_t)dlsym(g_hInfDLL, "SQLColumns");					assert(g_infAPI.SQLColumns != NULL);
	g_infAPI.SQLConnect				= (SQLConnect_t)dlsym(g_hInfDLL, "SQLConnect");					assert(g_infAPI.SQLConnect != NULL);
	g_infAPI.SQLCopyDesc			= (SQLCopyDesc_t)dlsym(g_hInfDLL, "SQLCopyDesc");				//assert(g_infAPI.SQLCopyDesc != NULL);
	g_infAPI.SQLDataSources			= (SQLDataSources_t)dlsym(g_hInfDLL, "SQLDataSources");			//assert(g_infAPI.SQLDataSources != NULL);
	g_infAPI.SQLDescribeCol			= (SQLDescribeCol_t)dlsym(g_hInfDLL, "SQLDescribeCol");			assert(g_infAPI.SQLDescribeCol != NULL);
	g_infAPI.SQLDescribeParam		= (SQLDescribeParam_t)dlsym(g_hInfDLL, "SQLDescribeParam");		assert(g_infAPI.SQLDescribeParam != NULL);
	g_infAPI.SQLDisconnect			= (SQLDisconnect_t)dlsym(g_hInfDLL, "SQLDisconnect");			assert(g_infAPI.SQLDisconnect != NULL);
	g_infAPI.SQLDriverConnect		= (SQLDriverConnect_t)dlsym(g_hInfDLL, "SQLDriverConnect");		assert(g_infAPI.SQLDriverConnect != NULL);
	g_infAPI.SQLDrivers				= (SQLDrivers_t)dlsym(g_hInfDLL, "SQLDrivers");					//assert(g_infAPI.SQLDrivers != NULL);
	g_infAPI.SQLEndTran				= (SQLEndTran_t)dlsym(g_hInfDLL, "SQLEndTran");					//assert(g_infAPI.SQLEndTran != NULL);
	g_infAPI.SQLError				= (SQLError_t)dlsym(g_hInfDLL, "SQLError");						//assert(g_infAPI.SQLError != NULL);
	g_infAPI.SQLExecDirect			= (SQLExecDirect_t)dlsym(g_hInfDLL, "SQLExecDirect");			assert(g_infAPI.SQLExecDirect != NULL);
	g_infAPI.SQLExecute				= (SQLExecute_t)dlsym(g_hInfDLL, "SQLExecute");					assert(g_infAPI.SQLExecute != NULL);
	g_infAPI.SQLExtendedFetch		= (SQLExtendedFetch_t)dlsym(g_hInfDLL, "SQLExtendedFetch");		assert(g_infAPI.SQLExtendedFetch != NULL);
	g_infAPI.SQLFetch				= (SQLFetch_t)dlsym(g_hInfDLL, "SQLFetch");						assert(g_infAPI.SQLFetch != NULL);
	g_infAPI.SQLFetchScroll			= (SQLFetchScroll_t)dlsym(g_hInfDLL, "SQLFetchScroll");			//assert(g_infAPI.SQLFetchScroll != NULL);
	g_infAPI.SQLForeignKeys			= (SQLForeignKeys_t)dlsym(g_hInfDLL, "SQLForeignKeys");			assert(g_infAPI.SQLForeignKeys != NULL);
	g_infAPI.SQLFreeConnect			= (SQLFreeConnect_t)dlsym(g_hInfDLL, "SQLFreeConnect");			//assert(g_infAPI.SQLFreeConnect != NULL);
	g_infAPI.SQLFreeEnv				= (SQLFreeEnv_t)dlsym(g_hInfDLL, "SQLFreeEnv");					//assert(g_infAPI.SQLFreeEnv != NULL);
	g_infAPI.SQLFreeHandle			= (SQLFreeHandle_t)dlsym(g_hInfDLL, "SQLFreeHandle");			//assert(g_infAPI.SQLFreeHandle != NULL);
	g_infAPI.SQLFreeStmt			= (SQLFreeStmt_t)dlsym(g_hInfDLL, "SQLFreeStmt");				assert(g_infAPI.SQLFreeStmt != NULL);
	g_infAPI.SQLGetConnectAttr		= (SQLGetConnectAttr_t)dlsym(g_hInfDLL, "SQLGetConnectAttr");	//assert(g_infAPI.SQLGetConnectAttr != NULL);
	g_infAPI.SQLGetConnectOption	= (SQLGetConnectOption_t)dlsym(g_hInfDLL, "SQLGetConnectOption");//assert(g_infAPI.SQLGetConnectOption != NULL);
	g_infAPI.SQLGetCursorName		= (SQLGetCursorName_t)dlsym(g_hInfDLL, "SQLGetCursorName");		assert(g_infAPI.SQLGetCursorName != NULL);
	g_infAPI.SQLGetData				= (SQLGetData_t)dlsym(g_hInfDLL, "SQLGetData");					assert(g_infAPI.SQLGetData!= NULL);
	g_infAPI.SQLGetDescField		= (SQLGetDescField_t)dlsym(g_hInfDLL, "SQLGetDescField");		//assert(g_infAPI.SQLGetDescField != NULL);
	g_infAPI.SQLGetDescRec			= (SQLGetDescRec_t)dlsym(g_hInfDLL, "SQLGetDescRec");			//assert(g_infAPI.SQLGetDescRec != NULL);
	g_infAPI.SQLGetDiagField		= (SQLGetDiagField_t)dlsym(g_hInfDLL, "SQLGetDiagField");		//assert(g_infAPI.SQLGetDiagField != NULL);
	g_infAPI.SQLGetDiagRec			= (SQLGetDiagRec_t)dlsym(g_hInfDLL, "SQLGetDiagRec");			//assert(g_infAPI.SQLGetDiagRec != NULL);
	g_infAPI.SQLGetEnvAttr			= (SQLGetEnvAttr_t)dlsym(g_hInfDLL, "SQLGetEnvAttr");			//assert(g_infAPI.SQLGetEnvAttr != NULL);
	g_infAPI.SQLGetFunctions		= (SQLGetFunctions_t)dlsym(g_hInfDLL, "SQLGetFunctions");		assert(g_infAPI.SQLGetFunctions != NULL);
	g_infAPI.SQLGetInfo				= (SQLGetInfo_t)dlsym(g_hInfDLL, "SQLGetInfo");					assert(g_infAPI.SQLGetInfo != NULL);
	g_infAPI.SQLGetStmtAttr			= (SQLGetStmtAttr_t)dlsym(g_hInfDLL, "SQLGetStmtAttr");			//assert(g_infAPI.SQLGetStmtAttr != NULL);
	g_infAPI.SQLGetStmtOption		= (SQLGetStmtOption_t)dlsym(g_hInfDLL, "SQLGetStmtOption");		//assert(g_infAPI.SQLGetStmtOption != NULL);

⌨️ 快捷键说明

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