📄 ib5api_linux.cpp
字号:
// ibAPIpp
//
//////////////////////////////////////////////////////////////////////
#include <ibAPI.h>
#include <assert.h>
#include <SQLAPI.h>
#include "samisc.h"
#include "errmsg.h"
#include <dlfcn.h>
static const char *g_sIB5DLLName = "libgds.so";
static const char *g_sCryptDLLName = "libcrypt.so";
static void* g_hIB5DLL = NULL;
static void* g_hCryptDLL = NULL;
long g_nIB5DLLVersionLoaded = 0;
static long g_nIB5DLLRefs = 0;
// API definitions
ibAPI g_ibAPI;
ibAPI::ibAPI()
{
isc_attach_database = NULL;
isc_array_gen_sdl = NULL;
isc_array_get_slice = NULL;
isc_array_lookup_bounds = NULL;
isc_array_lookup_desc = NULL;
isc_array_set_desc = NULL;
isc_array_put_slice = NULL;
isc_blob_default_desc = NULL;
isc_blob_gen_bpb = NULL;
isc_blob_info = NULL;
isc_blob_lookup_desc = NULL;
isc_blob_set_desc = NULL;
isc_cancel_blob = NULL;
isc_cancel_events = NULL;
isc_close_blob = NULL;
isc_commit_retaining = NULL;
isc_commit_transaction = NULL;
isc_create_blob = NULL;
isc_create_blob2 = NULL;
isc_create_database = NULL;
isc_database_info = NULL;
isc_decode_date = NULL;
isc_detach_database = NULL;
isc_drop_database = NULL;
isc_dsql_allocate_statement = NULL;
isc_dsql_alloc_statement2 = NULL;
isc_dsql_describe = NULL;
isc_dsql_describe_bind = NULL;
isc_dsql_exec_immed2 = NULL;
isc_dsql_execute = NULL;
isc_dsql_execute2 = NULL;
isc_dsql_execute_immediate = NULL;
isc_dsql_fetch = NULL;
isc_dsql_finish = NULL;
isc_dsql_free_statement = NULL;
isc_dsql_insert = NULL;
isc_dsql_prepare = NULL;
isc_dsql_set_cursor_name = NULL;
isc_dsql_sql_info = NULL;
isc_encode_date = NULL;
isc_event_block = NULL;
isc_event_counts = NULL;
isc_expand_dpb = NULL;
isc_modify_dpb = NULL;
isc_free = NULL;
isc_get_segment = NULL;
isc_get_slice = NULL;
isc_interprete = NULL;
isc_open_blob = NULL;
isc_open_blob2 = NULL;
isc_prepare_transaction2 = NULL;
isc_print_sqlerror = NULL;
isc_print_status = NULL;
isc_put_segment = NULL;
isc_put_slice = NULL;
isc_que_events = NULL;
isc_rollback_transaction = NULL;
isc_start_multiple = NULL;
isc_start_transaction = NULL;
isc_sqlcode = NULL;
isc_sql_interprete = NULL;
isc_transaction_info = NULL;
isc_transact_request = NULL;
isc_vax_integer = NULL;
isc_add_user = NULL;
isc_delete_user = NULL;
isc_modify_user = NULL;
isc_compile_request = NULL;
isc_compile_request2 = NULL;
isc_ddl = NULL;
isc_prepare_transaction = NULL;
isc_receive = NULL;
isc_reconnect_transaction = NULL;
isc_release_request = NULL;
isc_request_info = NULL;
isc_seek_blob = NULL;
isc_send = NULL;
isc_start_and_send = NULL;
isc_start_request = NULL;
isc_unwind_request = NULL;
isc_wait_for_event = NULL;
isc_close = NULL;
isc_declare = NULL;
isc_execute_immediate = NULL;
isc_dsql_execute_m = NULL;
isc_dsql_execute2_m = NULL;
isc_dsql_execute_immediate_m = NULL;
isc_dsql_exec_immed3_m = NULL;
isc_dsql_fetch_m = NULL;
isc_dsql_insert_m = NULL;
isc_dsql_prepare_m = NULL;
isc_dsql_release = NULL;
isc_embed_dsql_close = NULL;
isc_embed_dsql_declare = NULL;
isc_embed_dsql_describe = NULL;
isc_embed_dsql_describe_bind = NULL;
isc_embed_dsql_execute = NULL;
isc_embed_dsql_execute2 = NULL;
isc_embed_dsql_execute_immed = NULL;
isc_embed_dsql_fetch = NULL;
isc_embed_dsql_open = NULL;
isc_embed_dsql_open2 = NULL;
isc_embed_dsql_insert = NULL;
isc_embed_dsql_prepare = NULL;
isc_embed_dsql_release = NULL;
isc_ftof = NULL;
isc_print_blr = NULL;
isc_set_debug = NULL;
isc_qtoq = NULL;
isc_vtof = NULL;
isc_vtov = NULL;
isc_version = NULL;
}
ibConnectionHandles::ibConnectionHandles()
{
m_db_handle = NULL;
m_tr_handle = NULL;
}
ibCommandHandles::ibCommandHandles()
{
m_stmt_handle = NULL;
}
static void LoadAPI()
{
g_ibAPI.isc_attach_database = (isc_attach_database_t)dlsym(g_hIB5DLL, "isc_attach_database"); assert(g_ibAPI.isc_attach_database != NULL);
g_ibAPI.isc_array_gen_sdl = (isc_array_gen_sdl_t)dlsym(g_hIB5DLL, "isc_array_gen_sdl"); assert(g_ibAPI.isc_array_gen_sdl != NULL);
g_ibAPI.isc_array_get_slice = (isc_array_get_slice_t)dlsym(g_hIB5DLL, "isc_array_get_slice"); assert(g_ibAPI.isc_array_get_slice != NULL);
g_ibAPI.isc_array_lookup_bounds = (isc_array_lookup_bounds_t)dlsym(g_hIB5DLL, "isc_array_lookup_bounds"); assert(g_ibAPI.isc_array_lookup_bounds != NULL);
g_ibAPI.isc_array_lookup_desc = (isc_array_lookup_desc_t)dlsym(g_hIB5DLL, "isc_array_lookup_desc"); assert(g_ibAPI.isc_array_lookup_desc != NULL);
g_ibAPI.isc_array_set_desc = (isc_array_set_desc_t)dlsym(g_hIB5DLL, "isc_array_set_desc"); assert(g_ibAPI.isc_array_set_desc != NULL);
g_ibAPI.isc_array_put_slice = (isc_array_put_slice_t)dlsym(g_hIB5DLL, "isc_array_put_slice"); assert(g_ibAPI.isc_array_put_slice != NULL);
g_ibAPI.isc_blob_default_desc = (isc_blob_default_desc_t)dlsym(g_hIB5DLL, "isc_blob_default_desc"); assert(g_ibAPI.isc_blob_default_desc != NULL);
g_ibAPI.isc_blob_gen_bpb = (isc_blob_gen_bpb_t)dlsym(g_hIB5DLL, "isc_blob_gen_bpb"); assert(g_ibAPI.isc_blob_gen_bpb != NULL);
g_ibAPI.isc_blob_info = (isc_blob_info_t)dlsym(g_hIB5DLL, "isc_blob_info"); assert(g_ibAPI.isc_blob_info != NULL);
g_ibAPI.isc_blob_lookup_desc = (isc_blob_lookup_desc_t)dlsym(g_hIB5DLL, "isc_blob_lookup_desc"); assert(g_ibAPI.isc_blob_lookup_desc != NULL);
g_ibAPI.isc_blob_set_desc = (isc_blob_set_desc_t)dlsym(g_hIB5DLL, "isc_blob_set_desc"); assert(g_ibAPI.isc_blob_set_desc != NULL);
g_ibAPI.isc_cancel_blob = (isc_cancel_blob_t)dlsym(g_hIB5DLL, "isc_cancel_blob"); assert(g_ibAPI.isc_cancel_blob != NULL);
g_ibAPI.isc_cancel_events = (isc_cancel_events_t)dlsym(g_hIB5DLL, "isc_cancel_events"); assert(g_ibAPI.isc_cancel_events != NULL);
g_ibAPI.isc_close_blob = (isc_close_blob_t)dlsym(g_hIB5DLL, "isc_close_blob"); assert(g_ibAPI.isc_close_blob != NULL);
g_ibAPI.isc_commit_retaining = (isc_commit_retaining_t)dlsym(g_hIB5DLL, "isc_commit_retaining"); assert(g_ibAPI.isc_commit_retaining != NULL);
g_ibAPI.isc_commit_transaction = (isc_commit_transaction_t)dlsym(g_hIB5DLL, "isc_commit_transaction"); assert(g_ibAPI.isc_commit_transaction != NULL);
g_ibAPI.isc_create_blob = (isc_create_blob_t)dlsym(g_hIB5DLL, "isc_create_blob"); assert(g_ibAPI.isc_create_blob != NULL);
g_ibAPI.isc_create_blob2 = (isc_create_blob2_t)dlsym(g_hIB5DLL, "isc_create_blob2"); assert(g_ibAPI.isc_create_blob2 != NULL);
g_ibAPI.isc_create_database = (isc_create_database_t)dlsym(g_hIB5DLL, "isc_create_database"); assert(g_ibAPI.isc_create_database != NULL);
g_ibAPI.isc_database_info = (isc_database_info_t)dlsym(g_hIB5DLL, "isc_database_info"); assert(g_ibAPI.isc_database_info != NULL);
g_ibAPI.isc_decode_date = (isc_decode_date_t)dlsym(g_hIB5DLL, "isc_decode_date"); assert(g_ibAPI.isc_decode_date != NULL);
g_ibAPI.isc_detach_database = (isc_detach_database_t)dlsym(g_hIB5DLL, "isc_detach_database"); assert(g_ibAPI.isc_detach_database != NULL);
g_ibAPI.isc_drop_database = (isc_drop_database_t)dlsym(g_hIB5DLL, "isc_drop_database"); assert(g_ibAPI.isc_drop_database != NULL);
g_ibAPI.isc_dsql_allocate_statement = (isc_dsql_allocate_statement_t)dlsym(g_hIB5DLL, "isc_dsql_allocate_statement"); assert(g_ibAPI.isc_dsql_allocate_statement != NULL);
g_ibAPI.isc_dsql_alloc_statement2 = (isc_dsql_alloc_statement2_t)dlsym(g_hIB5DLL, "isc_dsql_alloc_statement2"); assert(g_ibAPI.isc_dsql_alloc_statement2 != NULL);
g_ibAPI.isc_dsql_describe = (isc_dsql_describe_t)dlsym(g_hIB5DLL, "isc_dsql_describe"); assert(g_ibAPI.isc_dsql_describe != NULL);
g_ibAPI.isc_dsql_describe_bind = (isc_dsql_describe_bind_t)dlsym(g_hIB5DLL, "isc_dsql_describe_bind"); assert(g_ibAPI.isc_dsql_describe_bind != NULL);
g_ibAPI.isc_dsql_exec_immed2 = (isc_dsql_exec_immed2_t)dlsym(g_hIB5DLL, "isc_dsql_exec_immed2"); assert(g_ibAPI.isc_dsql_exec_immed2 != NULL);
g_ibAPI.isc_dsql_execute = (isc_dsql_execute_t)dlsym(g_hIB5DLL, "isc_dsql_execute"); assert(g_ibAPI.isc_dsql_execute != NULL);
g_ibAPI.isc_dsql_execute2 = (isc_dsql_execute2_t)dlsym(g_hIB5DLL, "isc_dsql_execute2"); assert(g_ibAPI.isc_dsql_execute2 != NULL);
g_ibAPI.isc_dsql_execute_immediate = (isc_dsql_execute_immediate_t)dlsym(g_hIB5DLL, "isc_dsql_execute_immediate"); assert(g_ibAPI.isc_dsql_execute_immediate != NULL);
g_ibAPI.isc_dsql_fetch = (isc_dsql_fetch_t)dlsym(g_hIB5DLL, "isc_dsql_fetch"); assert(g_ibAPI.isc_dsql_fetch != NULL);
g_ibAPI.isc_dsql_finish = (isc_dsql_finish_t)dlsym(g_hIB5DLL, "isc_dsql_finish"); assert(g_ibAPI.isc_dsql_finish != NULL);
g_ibAPI.isc_dsql_free_statement = (isc_dsql_free_statement_t)dlsym(g_hIB5DLL, "isc_dsql_free_statement"); assert(g_ibAPI.isc_dsql_free_statement != NULL);
g_ibAPI.isc_dsql_insert = (isc_dsql_insert_t)dlsym(g_hIB5DLL, "isc_dsql_insert"); assert(g_ibAPI.isc_dsql_insert != NULL);
g_ibAPI.isc_dsql_prepare = (isc_dsql_prepare_t)dlsym(g_hIB5DLL, "isc_dsql_prepare"); assert(g_ibAPI.isc_dsql_prepare != NULL);
g_ibAPI.isc_dsql_set_cursor_name = (isc_dsql_set_cursor_name_t)dlsym(g_hIB5DLL, "isc_dsql_set_cursor_name"); assert(g_ibAPI.isc_dsql_set_cursor_name != NULL);
g_ibAPI.isc_dsql_sql_info = (isc_dsql_sql_info_t)dlsym(g_hIB5DLL, "isc_dsql_sql_info"); assert(g_ibAPI.isc_dsql_sql_info != NULL);
g_ibAPI.isc_encode_date = (isc_encode_date_t)dlsym(g_hIB5DLL, "isc_encode_date"); assert(g_ibAPI.isc_encode_date != NULL);
g_ibAPI.isc_event_block = (isc_event_block_t)dlsym(g_hIB5DLL, "isc_event_block"); assert(g_ibAPI.isc_event_block != NULL);
g_ibAPI.isc_event_counts = (isc_event_counts_t)dlsym(g_hIB5DLL, "isc_event_counts"); assert(g_ibAPI.isc_event_counts != NULL);
g_ibAPI.isc_expand_dpb = (isc_expand_dpb_t)dlsym(g_hIB5DLL, "isc_expand_dpb"); assert(g_ibAPI.isc_expand_dpb != NULL);
g_ibAPI.isc_modify_dpb = (isc_modify_dpb_t)dlsym(g_hIB5DLL, "isc_modify_dpb"); assert(g_ibAPI.isc_modify_dpb != NULL);
g_ibAPI.isc_free = (isc_free_t)dlsym(g_hIB5DLL, "isc_free"); assert(g_ibAPI.isc_free != NULL);
g_ibAPI.isc_get_segment = (isc_get_segment_t)dlsym(g_hIB5DLL, "isc_get_segment"); assert(g_ibAPI.isc_get_segment != NULL);
g_ibAPI.isc_get_slice = (isc_get_slice_t)dlsym(g_hIB5DLL, "isc_get_slice"); assert(g_ibAPI.isc_get_slice != NULL);
g_ibAPI.isc_interprete = (isc_interprete_t)dlsym(g_hIB5DLL, "isc_interprete"); assert(g_ibAPI.isc_interprete != NULL);
g_ibAPI.isc_open_blob = (isc_open_blob_t)dlsym(g_hIB5DLL, "isc_open_blob"); assert(g_ibAPI.isc_open_blob != NULL);
g_ibAPI.isc_open_blob2 = (isc_open_blob2_t)dlsym(g_hIB5DLL, "isc_open_blob2"); assert(g_ibAPI.isc_open_blob2 != NULL);
g_ibAPI.isc_prepare_transaction2 = (isc_prepare_transaction2_t)dlsym(g_hIB5DLL, "isc_prepare_transaction2"); assert(g_ibAPI.isc_prepare_transaction2 != NULL);
g_ibAPI.isc_print_sqlerror = (isc_print_sqlerror_t)dlsym(g_hIB5DLL, "isc_print_sqlerror"); assert(g_ibAPI.isc_print_sqlerror != NULL);
g_ibAPI.isc_print_status = (isc_print_status_t)dlsym(g_hIB5DLL, "isc_print_status"); assert(g_ibAPI.isc_print_status != NULL);
g_ibAPI.isc_put_segment = (isc_put_segment_t)dlsym(g_hIB5DLL, "isc_put_segment"); assert(g_ibAPI.isc_put_segment != NULL);
g_ibAPI.isc_put_slice = (isc_put_slice_t)dlsym(g_hIB5DLL, "isc_put_slice"); assert(g_ibAPI.isc_put_slice != NULL);
g_ibAPI.isc_que_events = (isc_que_events_t)dlsym(g_hIB5DLL, "isc_que_events"); assert(g_ibAPI.isc_que_events != NULL);
g_ibAPI.isc_rollback_transaction = (isc_rollback_transaction_t)dlsym(g_hIB5DLL, "isc_rollback_transaction"); assert(g_ibAPI.isc_rollback_transaction != NULL);
g_ibAPI.isc_start_multiple = (isc_start_multiple_t)dlsym(g_hIB5DLL, "isc_start_multiple"); assert(g_ibAPI.isc_start_multiple != NULL);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -