📄 odbcapi_linux.cpp
字号:
g_odbcAPI.SQLGetDescRec = (SQLGetDescRec_t)::dlsym(g_hODBCDLL, "SQLGetDescRec"); assert(g_odbcAPI.SQLGetDescRec != NULL);
g_odbcAPI.SQLGetDiagField = (SQLGetDiagField_t)::dlsym(g_hODBCDLL, "SQLGetDiagField"); assert(g_odbcAPI.SQLGetDiagField != NULL);
g_odbcAPI.SQLGetDiagRec = (SQLGetDiagRec_t)::dlsym(g_hODBCDLL, "SQLGetDiagRec"); assert(g_odbcAPI.SQLGetDiagRec != NULL);
g_odbcAPI.SQLGetEnvAttr = (SQLGetEnvAttr_t)::dlsym(g_hODBCDLL, "SQLGetEnvAttr"); assert(g_odbcAPI.SQLGetEnvAttr != NULL);
g_odbcAPI.SQLGetFunctions = (SQLGetFunctions_t)::dlsym(g_hODBCDLL, "SQLGetFunctions"); assert(g_odbcAPI.SQLGetFunctions != NULL);
g_odbcAPI.SQLGetInfo = (SQLGetInfo_t)::dlsym(g_hODBCDLL, "SQLGetInfo"); assert(g_odbcAPI.SQLGetInfo != NULL);
g_odbcAPI.SQLGetStmtAttr = (SQLGetStmtAttr_t)::dlsym(g_hODBCDLL, "SQLGetStmtAttr"); assert(g_odbcAPI.SQLGetStmtAttr != NULL);
g_odbcAPI.SQLGetStmtOption = (SQLGetStmtOption_t)::dlsym(g_hODBCDLL, "SQLGetStmtOption"); assert(g_odbcAPI.SQLGetStmtOption != NULL);
g_odbcAPI.SQLGetTypeInfo = (SQLGetTypeInfo_t)::dlsym(g_hODBCDLL, "SQLGetTypeInfo"); assert(g_odbcAPI.SQLGetTypeInfo != NULL);
g_odbcAPI.SQLMoreResults = (SQLMoreResults_t)::dlsym(g_hODBCDLL, "SQLMoreResults"); assert(g_odbcAPI.SQLMoreResults != NULL);
g_odbcAPI.SQLNativeSql = (SQLNativeSql_t)::dlsym(g_hODBCDLL, "SQLNativeSql"); assert(g_odbcAPI.SQLNativeSql != NULL);
g_odbcAPI.SQLNumParams = (SQLNumParams_t)::dlsym(g_hODBCDLL, "SQLNumParams"); assert(g_odbcAPI.SQLNumParams != NULL);
g_odbcAPI.SQLNumResultCols = (SQLNumResultCols_t)::dlsym(g_hODBCDLL, "SQLNumResultCols"); assert(g_odbcAPI.SQLNumResultCols != NULL);
g_odbcAPI.SQLParamData = (SQLParamData_t)::dlsym(g_hODBCDLL, "SQLParamData"); assert(g_odbcAPI.SQLParamData != NULL);
g_odbcAPI.SQLParamOptions = (SQLParamOptions_t)::dlsym(g_hODBCDLL, "SQLParamOptions"); assert(g_odbcAPI.SQLParamOptions != NULL);
g_odbcAPI.SQLPrepare = (SQLPrepare_t)::dlsym(g_hODBCDLL, "SQLPrepare"); assert(g_odbcAPI.SQLPrepare != NULL);
g_odbcAPI.SQLPrimaryKeys = (SQLPrimaryKeys_t)::dlsym(g_hODBCDLL, "SQLPrimaryKeys"); assert(g_odbcAPI.SQLPrimaryKeys != NULL);
g_odbcAPI.SQLProcedureColumns = (SQLProcedureColumns_t)::dlsym(g_hODBCDLL, "SQLProcedureColumns"); assert(g_odbcAPI.SQLProcedureColumns != NULL);
g_odbcAPI.SQLProcedures = (SQLProcedures_t)::dlsym(g_hODBCDLL, "SQLProcedures"); assert(g_odbcAPI.SQLProcedures != NULL);
g_odbcAPI.SQLPutData = (SQLPutData_t)::dlsym(g_hODBCDLL, "SQLPutData"); assert(g_odbcAPI.SQLPutData != NULL);
g_odbcAPI.SQLRowCount = (SQLRowCount_t)::dlsym(g_hODBCDLL, "SQLRowCount"); assert(g_odbcAPI.SQLRowCount != NULL);
g_odbcAPI.SQLSetConnectAttr = (SQLSetConnectAttr_t)::dlsym(g_hODBCDLL, "SQLSetConnectAttr"); assert(g_odbcAPI.SQLSetConnectAttr != NULL);
g_odbcAPI.SQLSetConnectOption = (SQLSetConnectOption_t)::dlsym(g_hODBCDLL, "SQLSetConnectOption"); assert(g_odbcAPI.SQLSetConnectOption != NULL);
g_odbcAPI.SQLSetCursorName = (SQLSetCursorName_t)::dlsym(g_hODBCDLL, "SQLSetCursorName"); assert(g_odbcAPI.SQLSetCursorName != NULL);
g_odbcAPI.SQLSetDescField = (SQLSetDescField_t)::dlsym(g_hODBCDLL, "SQLSetDescField"); assert(g_odbcAPI.SQLSetDescField != NULL);
g_odbcAPI.SQLSetDescRec = (SQLSetDescRec_t)::dlsym(g_hODBCDLL, "SQLSetDescRec"); assert(g_odbcAPI.SQLSetDescRec != NULL);
g_odbcAPI.SQLSetEnvAttr = (SQLSetEnvAttr_t)::dlsym(g_hODBCDLL, "SQLSetEnvAttr"); assert(g_odbcAPI.SQLSetEnvAttr != NULL);
g_odbcAPI.SQLSetParam = (SQLSetParam_t)::dlsym(g_hODBCDLL, "SQLSetParam"); assert(g_odbcAPI.SQLSetParam != NULL);
g_odbcAPI.SQLSetPos = (SQLSetPos_t)::dlsym(g_hODBCDLL, "SQLSetPos"); assert(g_odbcAPI.SQLSetPos != NULL);
g_odbcAPI.SQLSetScrollOptions = (SQLSetScrollOptions_t)::dlsym(g_hODBCDLL, "SQLSetScrollOptions"); assert(g_odbcAPI.SQLSetScrollOptions != NULL);
g_odbcAPI.SQLSetStmtAttr = (SQLSetStmtAttr_t)::dlsym(g_hODBCDLL, "SQLSetStmtAttr"); assert(g_odbcAPI.SQLSetStmtAttr != NULL);
g_odbcAPI.SQLSetStmtOption = (SQLSetStmtOption_t)::dlsym(g_hODBCDLL, "SQLSetStmtOption"); assert(g_odbcAPI.SQLSetStmtOption != NULL);
g_odbcAPI.SQLSpecialColumns = (SQLSpecialColumns_t)::dlsym(g_hODBCDLL, "SQLSpecialColumns"); assert(g_odbcAPI.SQLSpecialColumns != NULL);
g_odbcAPI.SQLStatistics = (SQLStatistics_t)::dlsym(g_hODBCDLL, "SQLStatistics"); assert(g_odbcAPI.SQLStatistics != NULL);
g_odbcAPI.SQLTablePrivileges = (SQLTablePrivileges_t)::dlsym(g_hODBCDLL, "SQLTablePrivileges"); assert(g_odbcAPI.SQLTablePrivileges != NULL);
g_odbcAPI.SQLTables = (SQLTables_t)::dlsym(g_hODBCDLL, "SQLTables"); assert(g_odbcAPI.SQLTables != NULL);
g_odbcAPI.SQLTransact = (SQLTransact_t)::dlsym(g_hODBCDLL, "SQLTransact"); assert(g_odbcAPI.SQLTransact != NULL);
}
static void ResetAPI()
{
g_odbcAPI.SQLAllocConnect = NULL; // 1.0
g_odbcAPI.SQLAllocEnv = NULL; // 1.0
g_odbcAPI.SQLAllocHandle = NULL; // 3.0
g_odbcAPI.SQLAllocStmt = NULL; // 1.0
g_odbcAPI.SQLBindCol = NULL; // 1.0
g_odbcAPI.SQLBindParameter = NULL; // 2.0
g_odbcAPI.SQLBrowseConnect = NULL; // 1.0
g_odbcAPI.SQLBulkOperations = NULL; // 3.0
g_odbcAPI.SQLCancel = NULL; // 1.0
g_odbcAPI.SQLCloseCursor = NULL; // 3.0
g_odbcAPI.SQLColAttribute = NULL; // 3,0
g_odbcAPI.SQLColAttributes = NULL; // 1.0
g_odbcAPI.SQLColumnPrivileges = NULL; // 1.0
g_odbcAPI.SQLColumns = NULL; // 1.0
g_odbcAPI.SQLConnect = NULL; // 1.0
g_odbcAPI.SQLCopyDesc = NULL; // 3.0
g_odbcAPI.SQLDataSources = NULL; // 1.0
g_odbcAPI.SQLDescribeCol = NULL; // 1.0
g_odbcAPI.SQLDescribeParam = NULL; // 1.0
g_odbcAPI.SQLDisconnect = NULL; // 1.0
g_odbcAPI.SQLDriverConnect = NULL; // 1.0
g_odbcAPI.SQLDrivers = NULL; // 2.0
g_odbcAPI.SQLEndTran = NULL; // 3.0
g_odbcAPI.SQLError = NULL; // 1.0
g_odbcAPI.SQLExecDirect = NULL; // 1.0
g_odbcAPI.SQLExecute = NULL; // 1.0
g_odbcAPI.SQLExtendedFetch = NULL; // 1.0
g_odbcAPI.SQLFetch = NULL; // 1.0
g_odbcAPI.SQLFetchScroll = NULL; // 1.0
g_odbcAPI.SQLForeignKeys = NULL; // 1.0
g_odbcAPI.SQLFreeConnect = NULL; // 1.0
g_odbcAPI.SQLFreeEnv = NULL; // 1.0
g_odbcAPI.SQLFreeHandle = NULL; // 3.0
g_odbcAPI.SQLFreeStmt = NULL; // 1.0
g_odbcAPI.SQLGetConnectAttr = NULL; // 3.0
g_odbcAPI.SQLGetConnectOption = NULL; // 1.0
g_odbcAPI.SQLGetCursorName = NULL; // 1.0
g_odbcAPI.SQLGetData = NULL; // 1.0
g_odbcAPI.SQLGetDescField = NULL; // 3.0
g_odbcAPI.SQLGetDescRec = NULL; // 3.0
g_odbcAPI.SQLGetDiagField = NULL; // 3.0
g_odbcAPI.SQLGetDiagRec = NULL; // 3.0
g_odbcAPI.SQLGetEnvAttr = NULL; // 3.0
g_odbcAPI.SQLGetFunctions = NULL; // 1.0
g_odbcAPI.SQLGetInfo = NULL; // 1.0
g_odbcAPI.SQLGetStmtAttr = NULL; // 3.0
g_odbcAPI.SQLGetStmtOption = NULL; // 1.0
g_odbcAPI.SQLGetTypeInfo = NULL; // 1.0
g_odbcAPI.SQLMoreResults = NULL; // 1.0
g_odbcAPI.SQLNativeSql = NULL; // 1.0
g_odbcAPI.SQLNumParams = NULL; // 1.0
g_odbcAPI.SQLNumResultCols = NULL; // 1.0
g_odbcAPI.SQLParamData = NULL; // 1.0
g_odbcAPI.SQLParamOptions = NULL; // 1.0
g_odbcAPI.SQLPrepare = NULL; // 1.0
g_odbcAPI.SQLPrimaryKeys = NULL; // 1.0
g_odbcAPI.SQLProcedureColumns = NULL; // 1.0
g_odbcAPI.SQLProcedures = NULL; // 1.0
g_odbcAPI.SQLPutData = NULL; // 1.0
g_odbcAPI.SQLRowCount = NULL; // 1.0
g_odbcAPI.SQLSetConnectAttr = NULL; // 3.0
g_odbcAPI.SQLSetConnectOption = NULL; // 1.0
g_odbcAPI.SQLSetCursorName = NULL; // 1.0
g_odbcAPI.SQLSetDescField = NULL; // 3.0
g_odbcAPI.SQLSetDescRec = NULL; // 3.0
g_odbcAPI.SQLSetEnvAttr = NULL; // 3.0
g_odbcAPI.SQLSetParam = NULL; // 1.0
g_odbcAPI.SQLSetPos = NULL; // 1.0
g_odbcAPI.SQLSetScrollOptions = NULL; // 1.0
g_odbcAPI.SQLSetStmtAttr = NULL; // 3.0
g_odbcAPI.SQLSetStmtOption = NULL; // 1.0
g_odbcAPI.SQLSpecialColumns = NULL; // 1.0
g_odbcAPI.SQLStatistics = NULL; // 1.0
g_odbcAPI.SQLTablePrivileges = NULL; // 1.0
g_odbcAPI.SQLTables = NULL; // 1.0
g_odbcAPI.SQLTransact = NULL; // 1.0
}
void AddODBCSupport(const SAConnection *pCon)
{
if(!g_hODBCDLL)
{
SAString s = pCon->Option("UseManagerOnUNIX");
const char *sDLLName =
s.IsEmpty()? g_sODBCDLLName : (const char*)s;
// load ODBC API library
g_hODBCDLL = ::dlopen(sDLLName, RTLD_LAZY);
if(!g_hODBCDLL)
throw SAException(SA_Library_Error, -1, -1, IDS_LOAD_LIBRARY_FAILS, ::dlerror(), sDLLName);
LoadAPI();
}
g_nODBCDLLRefs++;
}
void ReleaseODBCSupport()
{
assert(g_nODBCDLLRefs > 0);
--g_nODBCDLLRefs;
if(!g_nODBCDLLRefs)
{
ResetAPI();
// SegFault //::dlclose(g_hODBCDLL);
g_hODBCDLL = NULL;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -