📄 odbcapi_linux.cpp
字号:
// 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 + -