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

📄 odbcapi_linux.cpp

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

#include <SQLAPI.h>
#include <odbcAPI.h>

#include <assert.h>
#include "samisc.h"
#include "errmsg.h"

#include <dlfcn.h>

static const char *g_sODBCDLLName = "libiodbc.so.2";
static void *g_hODBCDLL = NULL;
long g_nODBCDLLVersionLoaded = 0;
static long g_nODBCDLLRefs = 0;

// API definitions
odbcAPI g_odbcAPI;

odbcAPI::odbcAPI()
{
	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
}

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

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

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

⌨️ 快捷键说明

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