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

📄 ib5api_linux.cpp

📁 通用的数据库中间库
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	g_ibAPI.isc_start_transaction	= (isc_start_transaction_t)dlsym(g_hIB5DLL, "isc_start_transaction");	assert(g_ibAPI.isc_start_transaction != NULL);
	g_ibAPI.isc_sqlcode	= (isc_sqlcode_t)dlsym(g_hIB5DLL, "isc_sqlcode");	assert(g_ibAPI.isc_sqlcode != NULL);
	g_ibAPI.isc_sql_interprete	= (isc_sql_interprete_t)dlsym(g_hIB5DLL, "isc_sql_interprete");	assert(g_ibAPI.isc_sql_interprete != NULL);
	g_ibAPI.isc_transaction_info	= (isc_transaction_info_t)dlsym(g_hIB5DLL, "isc_transaction_info");	assert(g_ibAPI.isc_transaction_info != NULL);
	g_ibAPI.isc_transact_request	= (isc_transact_request_t)dlsym(g_hIB5DLL, "isc_transact_request");	assert(g_ibAPI.isc_transact_request != NULL);
	g_ibAPI.isc_vax_integer	= (isc_vax_integer_t)dlsym(g_hIB5DLL, "isc_vax_integer");	assert(g_ibAPI.isc_vax_integer != NULL);
	g_ibAPI.isc_add_user	= (isc_add_user_t)dlsym(g_hIB5DLL, "isc_add_user");	assert(g_ibAPI.isc_add_user != NULL);
	g_ibAPI.isc_delete_user	= (isc_delete_user_t)dlsym(g_hIB5DLL, "isc_delete_user");	assert(g_ibAPI.isc_delete_user != NULL);
	g_ibAPI.isc_modify_user	= (isc_modify_user_t)dlsym(g_hIB5DLL, "isc_modify_user");	assert(g_ibAPI.isc_modify_user != NULL);
	g_ibAPI.isc_compile_request	= (isc_compile_request_t)dlsym(g_hIB5DLL, "isc_compile_request");	assert(g_ibAPI.isc_compile_request != NULL);
	g_ibAPI.isc_compile_request2	= (isc_compile_request2_t)dlsym(g_hIB5DLL, "isc_compile_request2");	assert(g_ibAPI.isc_compile_request2 != NULL);
	g_ibAPI.isc_ddl	= (isc_ddl_t)dlsym(g_hIB5DLL, "isc_ddl");	assert(g_ibAPI.isc_ddl != NULL);
	g_ibAPI.isc_prepare_transaction	= (isc_prepare_transaction_t)dlsym(g_hIB5DLL, "isc_prepare_transaction");	assert(g_ibAPI.isc_prepare_transaction != NULL);
	g_ibAPI.isc_receive	= (isc_receive_t)dlsym(g_hIB5DLL, "isc_receive");	assert(g_ibAPI.isc_receive != NULL);
	g_ibAPI.isc_reconnect_transaction	= (isc_reconnect_transaction_t)dlsym(g_hIB5DLL, "isc_reconnect_transaction");	assert(g_ibAPI.isc_reconnect_transaction != NULL);
	g_ibAPI.isc_release_request	= (isc_release_request_t)dlsym(g_hIB5DLL, "isc_release_request");	assert(g_ibAPI.isc_release_request != NULL);
	g_ibAPI.isc_request_info	= (isc_request_info_t)dlsym(g_hIB5DLL, "isc_request_info");	assert(g_ibAPI.isc_request_info != NULL);
	g_ibAPI.isc_seek_blob	= (isc_seek_blob_t)dlsym(g_hIB5DLL, "isc_seek_blob");	assert(g_ibAPI.isc_seek_blob != NULL);
	g_ibAPI.isc_send	= (isc_send_t)dlsym(g_hIB5DLL, "isc_send");	assert(g_ibAPI.isc_send != NULL);
	g_ibAPI.isc_start_and_send	= (isc_start_and_send_t)dlsym(g_hIB5DLL, "isc_start_and_send");	assert(g_ibAPI.isc_start_and_send != NULL);
	g_ibAPI.isc_start_request	= (isc_start_request_t)dlsym(g_hIB5DLL, "isc_start_request");	assert(g_ibAPI.isc_start_request != NULL);
	g_ibAPI.isc_unwind_request	= (isc_unwind_request_t)dlsym(g_hIB5DLL, "isc_unwind_request");	assert(g_ibAPI.isc_unwind_request != NULL);
	g_ibAPI.isc_wait_for_event	= (isc_wait_for_event_t)dlsym(g_hIB5DLL, "isc_wait_for_event");	assert(g_ibAPI.isc_wait_for_event != NULL);
	g_ibAPI.isc_close	= (isc_close_t)dlsym(g_hIB5DLL, "isc_close");	assert(g_ibAPI.isc_close != NULL);
	g_ibAPI.isc_declare	= (isc_declare_t)dlsym(g_hIB5DLL, "isc_declare");	assert(g_ibAPI.isc_declare != NULL);
	g_ibAPI.isc_execute_immediate	= (isc_execute_immediate_t)dlsym(g_hIB5DLL, "isc_execute_immediate");	assert(g_ibAPI.isc_execute_immediate != NULL);

	g_ibAPI.isc_dsql_execute_m	= (isc_dsql_execute_m_t)dlsym(g_hIB5DLL, "isc_dsql_execute_m");	assert(g_ibAPI.isc_dsql_execute_m != NULL);
	g_ibAPI.isc_dsql_execute2_m	= (isc_dsql_execute2_m_t)dlsym(g_hIB5DLL, "isc_dsql_execute2_m");	assert(g_ibAPI.isc_dsql_execute2_m != NULL);
	g_ibAPI.isc_dsql_execute_immediate_m	= (isc_dsql_execute_immediate_m_t)dlsym(g_hIB5DLL, "isc_dsql_execute_immediate_m");	assert(g_ibAPI.isc_dsql_execute_immediate_m != NULL);
	g_ibAPI.isc_dsql_exec_immed3_m	= (isc_dsql_exec_immed3_m_t)dlsym(g_hIB5DLL, "isc_dsql_exec_immed3_m");	assert(g_ibAPI.isc_dsql_exec_immed3_m != NULL);
	g_ibAPI.isc_dsql_fetch_m	= (isc_dsql_fetch_m_t)dlsym(g_hIB5DLL, "isc_dsql_fetch_m");	assert(g_ibAPI.isc_dsql_fetch_m != NULL);
	g_ibAPI.isc_dsql_insert_m	= (isc_dsql_insert_m_t)dlsym(g_hIB5DLL, "isc_dsql_insert_m");	assert(g_ibAPI.isc_dsql_insert_m != NULL);
	g_ibAPI.isc_dsql_prepare_m	= (isc_dsql_prepare_m_t)dlsym(g_hIB5DLL, "isc_dsql_prepare_m");	assert(g_ibAPI.isc_dsql_prepare_m != NULL);
	g_ibAPI.isc_dsql_release	= (isc_dsql_release_t)dlsym(g_hIB5DLL, "isc_dsql_release");	assert(g_ibAPI.isc_dsql_release != NULL);
	g_ibAPI.isc_embed_dsql_close	= (isc_embed_dsql_close_t)dlsym(g_hIB5DLL, "isc_embed_dsql_close");	assert(g_ibAPI.isc_embed_dsql_close != NULL);
	g_ibAPI.isc_embed_dsql_declare	= (isc_embed_dsql_declare_t)dlsym(g_hIB5DLL, "isc_embed_dsql_declare");	assert(g_ibAPI.isc_embed_dsql_declare != NULL);
	g_ibAPI.isc_embed_dsql_describe	= (isc_embed_dsql_describe_t)dlsym(g_hIB5DLL, "isc_embed_dsql_describe");	assert(g_ibAPI.isc_embed_dsql_describe != NULL);
	g_ibAPI.isc_embed_dsql_describe_bind	= (isc_embed_dsql_describe_bind_t)dlsym(g_hIB5DLL, "isc_embed_dsql_describe_bind");	assert(g_ibAPI.isc_embed_dsql_describe_bind != NULL);
	g_ibAPI.isc_embed_dsql_execute	= (isc_embed_dsql_execute_t)dlsym(g_hIB5DLL, "isc_embed_dsql_execute");	assert(g_ibAPI.isc_embed_dsql_execute != NULL);
	g_ibAPI.isc_embed_dsql_execute2	= (isc_embed_dsql_execute2_t)dlsym(g_hIB5DLL, "isc_embed_dsql_execute2");	assert(g_ibAPI.isc_embed_dsql_execute2 != NULL);
	g_ibAPI.isc_embed_dsql_execute_immed	= (isc_embed_dsql_execute_immed_t)dlsym(g_hIB5DLL, "isc_embed_dsql_execute_immed");	assert(g_ibAPI.isc_embed_dsql_execute_immed != NULL);
	g_ibAPI.isc_embed_dsql_fetch	= (isc_embed_dsql_fetch_t)dlsym(g_hIB5DLL, "isc_embed_dsql_fetch");	assert(g_ibAPI.isc_embed_dsql_fetch != NULL);
	g_ibAPI.isc_embed_dsql_open	= (isc_embed_dsql_open_t)dlsym(g_hIB5DLL, "isc_embed_dsql_open");	assert(g_ibAPI.isc_embed_dsql_open != NULL);
	g_ibAPI.isc_embed_dsql_open2	= (isc_embed_dsql_open2_t)dlsym(g_hIB5DLL, "isc_embed_dsql_open2");	assert(g_ibAPI.isc_embed_dsql_open2 != NULL);
	g_ibAPI.isc_embed_dsql_insert	= (isc_embed_dsql_insert_t)dlsym(g_hIB5DLL, "isc_embed_dsql_insert");	assert(g_ibAPI.isc_embed_dsql_insert != NULL);
	g_ibAPI.isc_embed_dsql_prepare	= (isc_embed_dsql_prepare_t)dlsym(g_hIB5DLL, "isc_embed_dsql_prepare");	assert(g_ibAPI.isc_embed_dsql_prepare != NULL);
	g_ibAPI.isc_embed_dsql_release	= (isc_embed_dsql_release_t)dlsym(g_hIB5DLL, "isc_embed_dsql_release");	assert(g_ibAPI.isc_embed_dsql_release != NULL);
	g_ibAPI.isc_ftof	= (isc_ftof_t)dlsym(g_hIB5DLL, "isc_ftof");	assert(g_ibAPI.isc_ftof != NULL);
	g_ibAPI.isc_print_blr	= (isc_print_blr_t)dlsym(g_hIB5DLL, "isc_print_blr");	assert(g_ibAPI.isc_print_blr != NULL);
	g_ibAPI.isc_set_debug	= (isc_set_debug_t)dlsym(g_hIB5DLL, "isc_set_debug");	assert(g_ibAPI.isc_set_debug != NULL);
	g_ibAPI.isc_qtoq	= (isc_qtoq_t)dlsym(g_hIB5DLL, "isc_qtoq");	assert(g_ibAPI.isc_qtoq != NULL);
	g_ibAPI.isc_vtof	= (isc_vtof_t)dlsym(g_hIB5DLL, "isc_vtof");	assert(g_ibAPI.isc_vtof != NULL);
	g_ibAPI.isc_vtov	= (isc_vtov_t)dlsym(g_hIB5DLL, "isc_vtov");	assert(g_ibAPI.isc_vtov != NULL);
	g_ibAPI.isc_version	= (isc_version_t)dlsym(g_hIB5DLL, "isc_version");	assert(g_ibAPI.isc_version != NULL);
}

static void ResetAPI()
{
	g_ibAPI.isc_attach_database	= NULL;
	g_ibAPI.isc_array_gen_sdl	= NULL;
	g_ibAPI.isc_array_get_slice	= NULL;
	g_ibAPI.isc_array_lookup_bounds	= NULL;
	g_ibAPI.isc_array_lookup_desc	= NULL;
	g_ibAPI.isc_array_set_desc	= NULL;
	g_ibAPI.isc_array_put_slice	= NULL;
	g_ibAPI.isc_blob_default_desc	= NULL;
	g_ibAPI.isc_blob_gen_bpb	= NULL;
	g_ibAPI.isc_blob_info	= NULL;
	g_ibAPI.isc_blob_lookup_desc	= NULL;
	g_ibAPI.isc_blob_set_desc	= NULL;
	g_ibAPI.isc_cancel_blob	= NULL;
	g_ibAPI.isc_cancel_events	= NULL;
	g_ibAPI.isc_close_blob	= NULL;
	g_ibAPI.isc_commit_retaining	= NULL;
	g_ibAPI.isc_commit_transaction	= NULL;
	g_ibAPI.isc_create_blob	= NULL;
	g_ibAPI.isc_create_blob2	= NULL;
	g_ibAPI.isc_create_database	= NULL;
	g_ibAPI.isc_database_info	= NULL;
	g_ibAPI.isc_decode_date	= NULL;
	g_ibAPI.isc_detach_database	= NULL;
	g_ibAPI.isc_drop_database	= NULL;
	g_ibAPI.isc_dsql_allocate_statement	= NULL;
	g_ibAPI.isc_dsql_alloc_statement2	= NULL;
	g_ibAPI.isc_dsql_describe	= NULL;
	g_ibAPI.isc_dsql_describe_bind	= NULL;
	g_ibAPI.isc_dsql_exec_immed2	= NULL;
	g_ibAPI.isc_dsql_execute	= NULL;
	g_ibAPI.isc_dsql_execute2	= NULL;
	g_ibAPI.isc_dsql_execute_immediate	= NULL;
	g_ibAPI.isc_dsql_fetch	= NULL;
	g_ibAPI.isc_dsql_finish	= NULL;
	g_ibAPI.isc_dsql_free_statement	= NULL;
	g_ibAPI.isc_dsql_insert	= NULL;
	g_ibAPI.isc_dsql_prepare	= NULL;
	g_ibAPI.isc_dsql_set_cursor_name	= NULL;
	g_ibAPI.isc_dsql_sql_info	= NULL;
	g_ibAPI.isc_encode_date	= NULL;
	g_ibAPI.isc_event_block	= NULL;
	g_ibAPI.isc_event_counts	= NULL;
	g_ibAPI.isc_expand_dpb	= NULL;
	g_ibAPI.isc_modify_dpb	= NULL;
	g_ibAPI.isc_free	= NULL;
	g_ibAPI.isc_get_segment	= NULL;
	g_ibAPI.isc_get_slice	= NULL;
	g_ibAPI.isc_interprete	= NULL;
	g_ibAPI.isc_open_blob	= NULL;
	g_ibAPI.isc_open_blob2	= NULL;
	g_ibAPI.isc_prepare_transaction2	= NULL;
	g_ibAPI.isc_print_sqlerror	= NULL;
	g_ibAPI.isc_print_status	= NULL;
	g_ibAPI.isc_put_segment	= NULL;
	g_ibAPI.isc_put_slice	= NULL;
	g_ibAPI.isc_que_events	= NULL;
	g_ibAPI.isc_rollback_transaction	= NULL;
	g_ibAPI.isc_start_multiple	= NULL;
	g_ibAPI.isc_start_transaction	= NULL;
	g_ibAPI.isc_sqlcode	= NULL;
	g_ibAPI.isc_sql_interprete	= NULL;
	g_ibAPI.isc_transaction_info	= NULL;
	g_ibAPI.isc_transact_request	= NULL;
	g_ibAPI.isc_vax_integer	= NULL;
	g_ibAPI.isc_add_user	= NULL;
	g_ibAPI.isc_delete_user	= NULL;
	g_ibAPI.isc_modify_user	= NULL;
	g_ibAPI.isc_compile_request	= NULL;
	g_ibAPI.isc_compile_request2	= NULL;
	g_ibAPI.isc_ddl	= NULL;
	g_ibAPI.isc_prepare_transaction	= NULL;
	g_ibAPI.isc_receive	= NULL;
	g_ibAPI.isc_reconnect_transaction	= NULL;
	g_ibAPI.isc_release_request	= NULL;
	g_ibAPI.isc_request_info	= NULL;
	g_ibAPI.isc_seek_blob	= NULL;
	g_ibAPI.isc_send	= NULL;
	g_ibAPI.isc_start_and_send	= NULL;
	g_ibAPI.isc_start_request	= NULL;
	g_ibAPI.isc_unwind_request	= NULL;
	g_ibAPI.isc_wait_for_event	= NULL;
	g_ibAPI.isc_close	= NULL;
	g_ibAPI.isc_declare	= NULL;
	g_ibAPI.isc_execute_immediate	= NULL;
	g_ibAPI.isc_dsql_execute_m	= NULL;
	g_ibAPI.isc_dsql_execute2_m	= NULL;
	g_ibAPI.isc_dsql_execute_immediate_m	= NULL;
	g_ibAPI.isc_dsql_exec_immed3_m	= NULL;
	g_ibAPI.isc_dsql_fetch_m	= NULL;
	g_ibAPI.isc_dsql_insert_m	= NULL;
	g_ibAPI.isc_dsql_prepare_m	= NULL;
	g_ibAPI.isc_dsql_release	= NULL;
	g_ibAPI.isc_embed_dsql_close	= NULL;
	g_ibAPI.isc_embed_dsql_declare	= NULL;
	g_ibAPI.isc_embed_dsql_describe	= NULL;
	g_ibAPI.isc_embed_dsql_describe_bind	= NULL;
	g_ibAPI.isc_embed_dsql_execute	= NULL;
	g_ibAPI.isc_embed_dsql_execute2	= NULL;
	g_ibAPI.isc_embed_dsql_execute_immed	= NULL;
	g_ibAPI.isc_embed_dsql_fetch	= NULL;
	g_ibAPI.isc_embed_dsql_open	= NULL;
	g_ibAPI.isc_embed_dsql_open2	= NULL;
	g_ibAPI.isc_embed_dsql_insert	= NULL;
	g_ibAPI.isc_embed_dsql_prepare	= NULL;
	g_ibAPI.isc_embed_dsql_release	= NULL;
	g_ibAPI.isc_ftof	= NULL;
	g_ibAPI.isc_print_blr	= NULL;
	g_ibAPI.isc_set_debug	= NULL;
	g_ibAPI.isc_qtoq	= NULL;
	g_ibAPI.isc_vtof	= NULL;
	g_ibAPI.isc_vtov	= NULL;
	g_ibAPI.isc_version	= NULL;
}

void AddIB5Support()
{
	if(!g_nIB5DLLRefs)
	{
		g_hCryptDLL = ::dlopen(g_sCryptDLLName, RTLD_LAZY|RTLD_GLOBAL);
		if(!g_hCryptDLL)
			throw SAException(SA_Library_Error, -1, -1, IDS_LOAD_LIBRARY_FAILS, ::dlerror(), g_sCryptDLLName);

		// load InterBase API library
		g_hIB5DLL = ::dlopen(g_sIB5DLLName, RTLD_NOW|RTLD_GLOBAL);
		if(!g_hIB5DLL)
		{
			::dlclose(g_hCryptDLL);
			throw SAException(SA_Library_Error, -1, -1, IDS_LOAD_LIBRARY_FAILS, ::dlerror(), g_sIB5DLLName);
		}
			
		g_nIB5DLLVersionLoaded = 0;	// Version unknown
		LoadAPI();
	}

	g_nIB5DLLRefs++;
}

void ReleaseIB5Support()
{
	assert(g_nIB5DLLRefs > 0);
	g_nIB5DLLRefs--;
	if(!g_nIB5DLLRefs)
	{
		g_nIB5DLLVersionLoaded = 0;
		ResetAPI();

		dlclose(g_hCryptDLL);
		//dlclose(g_hIB5DLL);
		g_hIB5DLL = NULL;
	}
}

⌨️ 快捷键说明

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