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