📄 ib_intf.pas
字号:
{***************************************************************}
{ FIBPlus - component library for direct access to Firebird and }
{ InterBase databases }
{ }
{ FIBPlus is based in part on the product }
{ Free IB Components, written by Gregory H. Deatz for }
{ Hoagland, Longo, Moran, Dunst & Doukas Company. }
{ mailto:gdeatz@hlmdd.com }
{ }
{ Copyright (c) 1998-2007 Devrace Ltd. }
{ Written by Serge Buzadzhy (buzz@devrace.com) }
{ }
{ ------------------------------------------------------------- }
{ FIBPlus home page: http://www.fibplus.com/ }
{ FIBPlus support : http://www.devrace.com/support/ }
{ ------------------------------------------------------------- }
{ }
{ Please see the file License.txt for full license information }
{***************************************************************}
unit IB_Intf;
interface
uses
{$I FIBPlus.inc}
{$T-}
{$IFDEF WINDOWS} Windows {$ENDIF}
{$IFDEF LINUX} Types,Libc {$ENDIF}
,Classes,Sysutils, ibase, IB_InstallHeader, IB_Externals;
type
{$M-}
IIBClientLibrary = interface
['{BB362CBF-2BD0-41A8-8982-F5E3327354A6}']
function GetLibName:string;
function GetIBClientVersion: Integer;
function GetIBClientMinorVersion: Integer;
function GetBusy:boolean;
function isc_attach_database(status_vector : PISC_STATUS; db_name_length : Short;
db_name : PChar; db_handle : PISC_DB_HANDLE;
parm_buffer_length : Short; parm_buffer : PChar): ISC_STATUS;
function isc_array_get_slice(status_vector : PISC_STATUS; db_handle : PISC_DB_HANDLE;
trans_handle : PISC_TR_HANDLE; array_id : PISC_QUAD;
descriptor : PISC_ARRAY_DESC; dest_array : PVoid;
slice_length : ISC_LONG): ISC_STATUS;
function isc_array_lookup_bounds(status_vector : PISC_STATUS; db_handle : PISC_DB_HANDLE;
trans_handle : PISC_TR_HANDLE; table_name, column_name : PChar;
descriptor : PISC_ARRAY_DESC): ISC_STATUS;
function isc_array_lookup_desc(status_vector : PISC_STATUS; db_handle : PISC_DB_HANDLE;
trans_handle : PISC_TR_HANDLE; table_name, column_name : PChar;
descriptor : PISC_ARRAY_DESC): ISC_STATUS;
function isc_array_set_desc(status_vector : PISC_STATUS; table_name : PChar;
column_name : PChar; sql_dtype, sql_length, sql_dimensions : PShort;
descriptor : PISC_ARRAY_DESC): ISC_STATUS;
function isc_array_put_slice(status_vector : PISC_STATUS; db_handle : PISC_DB_HANDLE;
trans_handle : PISC_TR_HANDLE; array_id : PISC_QUAD;
descriptor : PISC_ARRAY_DESC; source_array : PVoid;
slice_length : PISC_LONG): ISC_STATUS;
function isc_blob_info(status_vector : PISC_STATUS; blob_handle : PISC_BLOB_HANDLE;
item_list_buffer_length : Short; item_list_buffer : PChar;
result_buffer_length : Short; result_buffer : PChar): ISC_STATUS;
function isc_blob_lookup_desc(status_vector : PISC_STATUS; db_handle : PISC_DB_HANDLE;
trans_handle : PISC_TR_HANDLE; table_name, column_name : PChar;
descriptor : PISC_BLOB_DESC; global : PUChar): ISC_STATUS;
function isc_blob_set_desc(status_vector : PISC_STATUS; table_name, column_name : PChar;
subtype, charset, segment_size : Short; descriptor : PISC_BLOB_DESC): ISC_STATUS;
function isc_cancel_blob(status_vector : PISC_STATUS; blob_handle : PISC_BLOB_HANDLE): ISC_STATUS;
function isc_cancel_events(status_vector : PISC_STATUS; db_handle : PISC_DB_HANDLE;
event_id : PISC_LONG): ISC_STATUS;
function isc_que_events(status_vector : PISC_STATUS; db_handle : PISC_DB_HANDLE;
event_id : PISC_LONG; length : Short; event_buffer : PChar;
event_function : TISC_CALLBACK; event_function_arg : PVoid): ISC_STATUS;
function isc_wait_for_event (status_vector : PISC_STATUS;
db_handle : PISC_DB_HANDLE;
length : Short;
event_buffer,result_buffer : PChar): ISC_STATUS;
function isc_close_blob(status_vector : PISC_STATUS; blob_handle : PISC_BLOB_HANDLE): ISC_STATUS;
function isc_create_blob2(status_vector : PISC_STATUS; db_handle : PISC_DB_HANDLE;
tran_handle : PISC_TR_HANDLE; blob_handle : PISC_BLOB_HANDLE;
blob_id : PISC_QUAD; bpb_length : Short; bpb_address : PChar): ISC_STATUS;
function isc_commit_retaining(status_vector : PISC_STATUS; tran_handle : PISC_TR_HANDLE): ISC_STATUS;
function isc_commit_transaction(status_vector : PISC_STATUS; tran_handle : PISC_TR_HANDLE): ISC_STATUS;
function isc_transaction_info(status_vector : PISC_STATUS;
tran_handle : PISC_TR_HANDLE;
item_list_buffer_length : Short;
item_list_buffer : PChar;
result_buffer_length : Short;
result_buffer : PChar): ISC_STATUS;
function isc_database_info(status_vector : PISC_STATUS; db_handle : PISC_DB_HANDLE;
item_list_buffer_length : Short; item_list_buffer : PChar;
result_buffer_length : Short; result_buffer : PChar): ISC_STATUS;
procedure isc_decode_date(ib_date: PISC_QUAD; tm_date: PCTimeStructure);
procedure isc_decode_sql_date(ib_date: PISC_DATE; tm_date: PCTimeStructure);
procedure isc_decode_sql_time(ib_time: PISC_TIME; tm_date: PCTimeStructure);
procedure isc_decode_timestamp(ib_timestamp: PISC_TIMESTAMP; tm_date: PCTimeStructure);
function isc_detach_database(status_vector : PISC_STATUS; db_handle : PISC_DB_HANDLE): ISC_STATUS;
function isc_drop_database(status_vector : PISC_STATUS; db_handle : PISC_DB_HANDLE): ISC_STATUS;
function isc_dsql_alloc_statement2(const status_vector : PISC_STATUS; db_handle : PISC_DB_HANDLE;
stmt_handle : PISC_STMT_HANDLE): ISC_STATUS;
function isc_dsql_describe(status_vector : PISC_STATUS; stmt_handle : PISC_STMT_HANDLE;
dialect : UShort; xsqlda : PXSQLDA): ISC_STATUS;
function isc_dsql_describe_bind(status_vector : PISC_STATUS; stmt_handle : PISC_STMT_HANDLE;
dialect : UShort; xsqlda : PXSQLDA): ISC_STATUS;
function isc_dsql_execute(status_vector : PISC_STATUS; tran_handle : PISC_TR_HANDLE;
stmt_handle : PISC_STMT_HANDLE; dialect : UShort;
xsqlda : PXSQLDA): ISC_STATUS;
function isc_dsql_execute2(status_vector : PISC_STATUS; tran_handle : PISC_TR_HANDLE;
stmt_handle : PISC_STMT_HANDLE; dialect : UShort;
in_xsqlda, out_xsqlda : PXSQLDA): ISC_STATUS;
function isc_dsql_execute_immediate(status_vector : PISC_STATUS; db_handle : PISC_DB_HANDLE;
tran_handle : PISC_TR_HANDLE; length : UShort;
statement : PChar; dialect : UShort;
xsqlda : PXSQLDA): ISC_STATUS;
function isc_dsql_exec_immed2(status_vector : PISC_STATUS;
db_handle : PISC_DB_HANDLE;
tran_handle : PISC_TR_HANDLE;
length : UShort;
statement : PChar;
dialect : UShort;
in_xsqlda,
out_xsqlda : PXSQLDA): ISC_STATUS;
function isc_dsql_fetch(status_vector : PISC_STATUS; stmt_handle : PISC_STMT_HANDLE;
dialect : UShort; xsqlda : PXSQLDA): ISC_STATUS;
function isc_dsql_free_statement(status_vector : PISC_STATUS; stmt_handle : PISC_STMT_HANDLE;
options : UShort): ISC_STATUS;
function isc_dsql_prepare(status_vector : PISC_STATUS; tran_handle : PISC_TR_HANDLE;
stmt_handle : PISC_STMT_HANDLE; length : UShort;
statement : PChar; dialect : UShort;
xsqlda : PXSQLDA): ISC_STATUS;
function isc_dsql_set_cursor_name(status_vector : PISC_STATUS; stmt_handle : PISC_STMT_HANDLE;
cursor_name : PChar; _type : UShort): ISC_STATUS;
function isc_dsql_sql_info(status_vector : PISC_STATUS; stmt_handle : PISC_STMT_HANDLE;
item_length : Short; items : PChar; buffer_length : Short;
buffer : PChar): ISC_STATUS;
procedure isc_encode_date(tm_date : PCTimeStructure; ib_date : PISC_QUAD);
procedure isc_encode_sql_date(tm_date: PCTimeStructure; ib_date : PISC_DATE);
procedure isc_encode_sql_time(tm_date : PCTimeStructure; ib_time : PISC_TIME);
procedure isc_encode_timestamp(tm_date : PCTimeStructure; ib_timestamp : PISC_TIMESTAMP);
function isc_event_block(event_buffer : PPChar; result_buffer : PPChar;
id_count : UShort; event_list : array of PChar): ISC_LONG;
procedure isc_event_counts(status_vector : PISC_STATUS; buffer_length : Short;
event_buffer : PChar; result_buffer : PChar);
function isc_free(isc_arg1 : PChar): ISC_LONG;
function isc_get_segment(status_vector : PISC_STATUS; blob_handle : PISC_BLOB_HANDLE;
actual_seg_length : PUShort; seg_buffer_length : UShort;
seg_buffer : PChar): ISC_STATUS;
function isc_put_segment(status_vector : PISC_STATUS; blob_handle : PISC_BLOB_HANDLE;
seg_buffer_len : UShort; seg_buffer : PChar): ISC_STATUS;
function isc_interprete(buffer : PChar; status_vector : PPISC_STATUS): ISC_STATUS;
function isc_open_blob2(status_vector : PISC_STATUS; db_handle : PISC_DB_HANDLE;
tran_handle : PISC_TR_HANDLE; blob_handle : PISC_BLOB_HANDLE;
blob_id : PISC_QUAD; bpb_length : Short; bpb_buffer : PChar): ISC_STATUS;
function isc_prepare_transaction2(status_vector : PISC_STATUS; tran_handle : PISC_TR_HANDLE;
msg_length : Short; msg : PChar): ISC_STATUS;
function isc_rollback_retaining(status_vector : PISC_STATUS; tran_handle : PISC_TR_HANDLE): ISC_STATUS;
function isc_rollback_transaction(status_vector : PISC_STATUS; tran_handle : PISC_TR_HANDLE): ISC_STATUS;
function isc_start_multiple(status_vector : PISC_STATUS; tran_handle : PISC_TR_HANDLE;
db_handle_count : Short; teb_vector_address : PISC_TEB): ISC_STATUS;
function isc_sqlcode(status_vector : PISC_STATUS): ISC_LONG;
procedure isc_sql_interprete(sqlcode : Short; buffer : PChar;
buffer_length : Short);
function isc_vax_integer(buffer : PChar; length : Short): ISC_LONG;
function isc_add_user(status_vector : PISC_STATUS; user_sec_data : PUserSecData): ISC_STATUS;
function isc_delete_user(status_vector : PISC_STATUS; user_sec_data : PUserSecData): ISC_STATUS;
function isc_modify_user(status_vector : PISC_STATUS; user_sec_data : PUserSecData): ISC_STATUS;
function isc_prepare_transaction(status_vector : PISC_STATUS;
tran_handle : PISC_TR_HANDLE): ISC_STATUS;
function BLOB_put(isc_arg1 : char; isc_arg2 : PBSTREAM): Int;
function BLOB_get(isc_arg1 : PBSTREAM): Int;
//IB2007
function isc_dsql_batch_execute_immed(status_vector : PISC_STATUS; db_handle : PISC_DB_HANDLE;
tran_handle : PISC_TR_HANDLE; Dialect : UShort; no_of_sql : ulong;
statement : PPChar; rows_affected : PULong) : ISC_STATUS;
function isc_dsql_batch_execute(status_vector : PISC_STATUS; tran_handle : PISC_TR_HANDLE;
stmt_handle : PISC_STMT_HANDLE; Dialect : UShort;
insqlda : PXSQLDA; no_of_rows : UShort;
batch_vars : PPXSQLVAR; rows_affected : PULong) : ISC_STATUS;
//FB2.5
function fb_cancel_operation(status_vector : PISC_STATUS; db_handle : PISC_DB_HANDLE;
option : UShort
) : ISC_STATUS;
// Service manager functions
function isc_service_attach (status_vector : PISC_STATUS;
isc_arg2 : UShort;
isc_arg3 : PChar;
service_handle : PISC_SVC_HANDLE;
isc_arg5 : UShort;
isc_arg6 : PChar): ISC_STATUS;
function isc_service_detach(status_vector : PISC_STATUS;
service_handle : PISC_SVC_HANDLE): ISC_STATUS;
function isc_service_query (status_vector : PISC_STATUS;
service_handle : PISC_SVC_HANDLE;
recv_handle : PISC_SVC_HANDLE;
isc_arg4 : UShort;
isc_arg5 : PChar;
isc_arg6 : UShort;
isc_arg7 : PChar;
isc_arg8 : UShort;
isc_arg9 : PChar): ISC_STATUS;
function isc_service_start (status_vector : PISC_STATUS;
service_handle : PISC_SVC_HANDLE;
recv_handle : PISC_SVC_HANDLE;
isc_arg4 : UShort;
isc_arg5 : PChar): ISC_STATUS;
// Client information functions
procedure isc_get_client_version(buffer : PChar);
function isc_get_client_major_version: Integer;
function isc_get_client_minor_version: Integer;
function isc_portable_integer(buffer: PChar;length: Short): ISC_INT64;
procedure FreeIBLibrary;
property LibraryName:string read GetLibName;
property ClientMinorVersion:integer read GetIBClientMinorVersion;
property ClientVersion :integer read GetIBClientVersion;
property Busy:boolean read GetBusy;
end;
{$M+}
EAPICallException =Exception;
TIBClientLibrary = class(TInterfacedObject, IIbClientLibrary)
private
{$IFDEF WINDOWS}
FLibraryHandle:THandle;
{$ENDIF}
{$IFDEF LINUX}
FIBCrypt : Pointer;
FLibraryHandle: Pointer;
{$ENDIF}
FLibraryName:string;
FIBClientVersion :integer;
FIBClientMinorVersion:integer;
private
FBLOB_get : TBLOB_get;
FBLOB_put : TBLOB_put;
Fisc_sqlcode : Tisc_sqlcode;
Fisc_sql_interprete : Tisc_sql_interprete;
Fisc_interprete : Tisc_interprete;
Fisc_vax_integer : Tisc_vax_integer;
Fisc_blob_info : Tisc_blob_info;
Fisc_open_blob2 : Tisc_open_blob2;
Fisc_close_blob : Tisc_close_blob;
Fisc_get_segment :Tisc_get_segment;
Fisc_put_segment :Tisc_put_segment;
Fisc_create_blob2 :Tisc_create_blob2;
Fisc_blob_lookup_desc:Tisc_blob_lookup_desc;
Fisc_blob_set_desc :Tisc_blob_set_desc;
Fisc_cancel_blob :Tisc_cancel_blob ;
Fisc_service_attach : Tisc_service_attach;
Fisc_service_detach : Tisc_service_detach;
Fisc_service_query : Tisc_service_query;
Fisc_service_start : Tisc_service_start;
Fisc_decode_date : Tisc_decode_date;
Fisc_decode_sql_date : Tisc_decode_sql_date;
Fisc_decode_sql_time : Tisc_decode_sql_time;
Fisc_decode_timestamp: Tisc_decode_timestamp;
Fisc_encode_date : Tisc_encode_date;
Fisc_encode_sql_date : Tisc_encode_sql_date;
Fisc_encode_sql_time : Tisc_encode_sql_time;
Fisc_encode_timestamp: Tisc_encode_timestamp;
Fisc_dsql_free_statement: Tisc_dsql_free_statement;
Fisc_dsql_execute2: Tisc_dsql_execute2;
Fisc_dsql_execute: Tisc_dsql_execute;
Fisc_dsql_set_cursor_name: Tisc_dsql_set_cursor_name;
Fisc_dsql_fetch: Tisc_dsql_fetch;
Fisc_dsql_sql_info: Tisc_dsql_sql_info;
Fisc_dsql_alloc_statement2: Tisc_dsql_alloc_statement2;
Fisc_dsql_prepare: Tisc_dsql_prepare;
Fisc_dsql_describe_bind: Tisc_dsql_describe_bind;
Fisc_dsql_describe: Tisc_dsql_describe;
Fisc_dsql_execute_immediate: Tisc_dsql_execute_immediate;
Fisc_dsql_exec_immed2: Tisc_dsql_exec_immed2;
Fisc_drop_database: Tisc_drop_database;
Fisc_detach_database: Tisc_detach_database;
Fisc_attach_database: Tisc_attach_database;
Fisc_database_info: Tisc_database_info;
Fisc_start_multiple: Tisc_start_multiple;
Fisc_commit_transaction: Tisc_commit_transaction;
Fisc_commit_retaining: Tisc_commit_retaining;
Fisc_rollback_transaction: Tisc_rollback_transaction;
Fisc_rollback_retaining: Tisc_rollback_retaining;
Fisc_cancel_events: Tisc_cancel_events;
Fisc_que_events: Tisc_que_events;
Fisc_event_counts: Tisc_event_counts;
Fisc_event_block: Tisc_event_block;
Fisc_free: Tisc_free;
Fisc_wait_for_event:Tisc_wait_for_event;
Fisc_transaction_info:Tisc_transaction_info;
Fisc_prepare_transaction:Tisc_prepare_transaction;
Fisc_prepare_transaction2:Tisc_prepare_transaction2;
//Array functions
Fisc_array_lookup_bounds :Tisc_array_lookup_bounds;
Fisc_array_get_slice :Tisc_array_get_slice;
Fisc_array_put_slice :Tisc_array_put_slice;
Fisc_array_set_desc :Tisc_array_set_desc;
Fisc_array_lookup_desc :Tisc_array_lookup_desc;
Fisc_portable_integer :Tisc_portable_integer;
Fisc_add_user :Tisc_add_user;
Fisc_delete_user:Tisc_delete_user;
Fisc_modify_user:Tisc_modify_user;
{ IB 7.0 functions only}
Fisc_get_client_version : Tisc_get_client_version;
Fisc_get_client_major_version : Tisc_get_client_major_version;
Fisc_get_client_minor_version : Tisc_get_client_minor_version;
//IB2007
Fisc_dsql_batch_execute_immed : Tisc_dsql_batch_execute_immed;
Fisc_dsql_batch_execute : Tisc_dsql_batch_execute;
//FB2.5
Ffb_cancel_operation: Tfb_cancel_operation;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -