📄 sdfib.pas
字号:
{*******************************************************}
{ }
{ Delphi SQLDirect Component Library }
{ Firebird API(v.1.5) Interface Unit }
{ }
{ Copyright (c) 1997,2005 by Yuri Sheino }
{ }
{*******************************************************}
{$I SqlDir.inc}
unit SDFib {$IFDEF SD_CLR} platform {$ENDIF};
interface
uses
Windows, SysUtils, Classes, Db, Registry, SyncObjs,
{$IFDEF SD_CLR}
System.Runtime.InteropServices,
{$ENDIF}
SDConsts, SDCommon, SDInt;
type
{ TFibFunctions }
TFibFunctions = class(TIntFunctions)
public
procedure SetApiCalls(ASqlLibModule: THandle); override;
end;
ESDFibError = class(ESDIntError);
{ TIFibDatabase }
TIFibDatabase = class(TICustomIntDatabase)
protected
procedure AllocHandle(DBHandles: Boolean); override;
procedure FreeSqlLib; override;
procedure LoadSqlLib; override;
function GetErrorClass: ESDEngineErrorClass; override;
public
function CreateSqlCommand: TISqlCommand; override;
function GetClientVersion: LongInt; override;
end;
{ TIFibCommand }
TIFibCommand = class(TICustomIntCommand)
end;
const
DefSqlApiDLL = 'FBCLIENT.DLL';
var
SqlApiDLL: string;
FibCalls: TFibFunctions;
(*******************************************************************************
Load/Unload Sql-library
********************************************************************************)
procedure LoadSqlLib;
procedure FreeSqlLib;
function InitSqlDatabase(ADbParams: TStrings): TISqlDatabase;
{$IFDEF SD_CLR}
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_attach_database')]
function isc_attach_database(
status_vector : PISC_STATUS;
db_name_length : Short;
db_name : TSDCharPtr;
db_handle : PISC_DB_HANDLE;
parm_buffer_length : Short;
parm_buffer : TSDCharPtr): ISC_STATUS; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_blob_default_desc')]
procedure isc_blob_default_desc(
desc : PISC_BLOB_DESC;
table_name : TSDCharPtr;
column_name : TSDCharPtr); external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_blob_gen_bpb')]
function isc_blob_gen_bpb(
status_vector : PISC_STATUS;
to_desc : PISC_BLOB_DESC;
from_desc : PISC_BLOB_DESC;
bpb_buffer_length : UShort;
bpb_buffer : TSDCharPtr;
bpb_length : PUShort): ISC_STATUS; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_blob_info')]
function isc_blob_info (
status_vector : PISC_STATUS;
var blob_handle : TISC_BLOB_HANDLE;
item_list_buffer_length : Short;
item_list_buffer : TSDCharPtr;
result_buffer_length : Short;
result_buffer : TSDCharPtr): ISC_STATUS; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_blob_lookup_desc')]
function isc_blob_lookup_desc(
status_vector : PISC_STATUS;
db_handle : PISC_DB_HANDLE;
trans_handle : PISC_TR_HANDLE;
table_name : TSDCharPtr;
column_name : TSDCharPtr;
desc : PISC_BLOB_DESC;
global_column_name : TSDCharPtr): ISC_STATUS; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_blob_set_desc')]
function isc_blob_set_desc(
status_vector : PISC_STATUS;
table_name : TSDCharPtr;
column_name : TSDCharPtr;
subtype,
charset,
segment_size : Short;
desc : PISC_BLOB_DESC): ISC_STATUS; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_cancel_blob')]
function isc_cancel_blob(
status_vector : PISC_STATUS;
var blob_handle : TISC_BLOB_HANDLE): ISC_STATUS; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_cancel_events')]
function isc_cancel_events(
status_vector : PISC_STATUS;
db_handle : PISC_DB_HANDLE;
event_id : PISC_LONG): ISC_STATUS; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_close_blob')]
function isc_close_blob(
status_vector : PISC_STATUS;
var blob_handle : TISC_BLOB_HANDLE): ISC_STATUS; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_commit_retaining')]
function isc_commit_retaining(
status_vector : PISC_STATUS;
tran_handle : PISC_TR_HANDLE): ISC_STATUS; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_commit_transaction')]
function isc_commit_transaction(
status_vector : PISC_STATUS;
tran_handle : PISC_TR_HANDLE): ISC_STATUS; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_create_blob')]
function isc_create_blob(
status_vector : PISC_STATUS;
db_handle : PISC_DB_HANDLE;
tran_handle : PISC_TR_HANDLE;
var blob_handle : TISC_BLOB_HANDLE;
blob_id : PISC_QUAD): ISC_STATUS; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_create_blob2')]
function isc_create_blob2(
status_vector : PISC_STATUS;
db_handle : PISC_DB_HANDLE;
tran_handle : PISC_TR_HANDLE;
var blob_handle : TISC_BLOB_HANDLE;
blob_id : PISC_QUAD;
bpb_length : Short;
bpb_address : TSDCharPtr): ISC_STATUS; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_create_database')]
function isc_create_database(
status_vector : PISC_STATUS;
db_name_length : Short;
db_name : TSDCharPtr;
db_handle : PISC_DB_HANDLE;
parm_buffer_length : Short;
parm_buffer : TSDCharPtr;
parm_7 : Short): ISC_STATUS; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_database_info')]
function isc_database_info(
status_vector : PISC_STATUS;
db_handle : PISC_DB_HANDLE;
item_list_buffer_length : Short;
item_list_buffer : TSDCharPtr;
result_buffer_length : Short;
result_buffer : TSDCharPtr): ISC_STATUS; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_decode_date')]
procedure isc_decode_date(
ib_date: PISC_QUAD;
var tm_date: TTimeDateRec); external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_decode_sql_date')]
procedure isc_decode_sql_date(
ib_date: PISC_DATE;
var tm_date: TTimeDateRec); external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_decode_sql_time')]
procedure isc_decode_sql_time(
ib_time: PISC_TIME;
var tm_date: TTimeDateRec); external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_decode_timestamp')]
procedure isc_decode_timestamp(
ib_timestamp: PISC_TIMESTAMP;
var tm_date: TTimeDateRec); external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_detach_database')]
function isc_detach_database(
status_vector : PISC_STATUS;
db_handle : PISC_DB_HANDLE): ISC_STATUS; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_drop_database')]
function isc_drop_database(
status_vector : PISC_STATUS;
db_handle : PISC_DB_HANDLE): ISC_STATUS; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_dsql_allocate_statement')]
function isc_dsql_allocate_statement(
status_vector : PISC_STATUS;
db_handle : PISC_DB_HANDLE;
stmt_handle : PISC_STMT_HANDLE): ISC_STATUS; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_dsql_alloc_statement2')]
function isc_dsql_alloc_statement2(
status_vector : PISC_STATUS;
db_handle : PISC_DB_HANDLE;
stmt_handle : PISC_STMT_HANDLE): ISC_STATUS; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_dsql_describe')]
function isc_dsql_describe(
status_vector : PISC_STATUS;
stmt_handle : PISC_STMT_HANDLE;
dialect : UShort;
xsqlda : PXSQLDA): ISC_STATUS; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_dsql_describe_bind')]
function isc_dsql_describe_bind(
status_vector : PISC_STATUS;
stmt_handle : PISC_STMT_HANDLE;
dialect : UShort;
xsqlda : PXSQLDA): ISC_STATUS; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_dsql_execute')]
function isc_dsql_execute(
status_vector : PISC_STATUS;
tran_handle : PISC_TR_HANDLE;
stmt_handle : PISC_STMT_HANDLE;
dialect : UShort;
xsqlda : PXSQLDA): ISC_STATUS; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_dsql_execute2')]
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;
external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_dsql_execute_immediate')]
function isc_dsql_execute_immediate(
status_vector : PISC_STATUS;
db_handle : PISC_DB_HANDLE;
tran_handle : PISC_TR_HANDLE;
length : UShort;
statement : TSDCharPtr;
dialect : UShort;
xsqlda : PXSQLDA): ISC_STATUS; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_dsql_exec_immed2')]
function isc_dsql_exec_immed2(
status_vector : PISC_STATUS;
db_handle : PISC_DB_HANDLE;
tran_handle : PISC_TR_HANDLE;
length : UShort;
statement : TSDCharPtr;
dialect : UShort;
in_xsqlda, out_xsqlda : PXSQLDA): ISC_STATUS; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_dsql_fetch')]
function isc_dsql_fetch(
status_vector : PISC_STATUS;
stmt_handle : PISC_STMT_HANDLE;
dialect : UShort;
xsqlda : PXSQLDA): ISC_STATUS; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_dsql_finish')]
function isc_dsql_finish(
db_handle : PISC_DB_HANDLE): ISC_STATUS; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_dsql_free_statement')]
function isc_dsql_free_statement(
status_vector : PISC_STATUS;
stmt_handle : PISC_STMT_HANDLE;
option : UShort): ISC_STATUS; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_dsql_prepare')]
function isc_dsql_prepare(
status_vector : PISC_STATUS;
tran_handle : PISC_TR_HANDLE;
stmt_handle : PISC_STMT_HANDLE;
length : UShort;
statement : TSDCharPtr;
dialect : UShort;
xsqlda : PXSQLDA): ISC_STATUS; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_dsql_set_cursor_name')]
function isc_dsql_set_cursor_name(
status_vector : PISC_STATUS;
stmt_handle : PISC_STMT_HANDLE;
cursor_name : TSDCharPtr;
type_reserved : UShort): ISC_STATUS; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_dsql_sql_info')]
function isc_dsql_sql_info(
status_vector : PISC_STATUS;
stmt_handle : PISC_STMT_HANDLE;
item_length : Short;
items : TSDCharPtr;
buffer_length : Short;
buffer : TSDCharPtr): ISC_STATUS; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_encode_date')]
procedure isc_encode_date(
var tm_date: TTimeDateRec;
ib_date: PISC_QUAD); external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_encode_sql_date')]
procedure isc_encode_sql_date(
var tm_date: TTimeDateRec;
ib_date: PISC_DATE); external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_encode_sql_time')]
procedure isc_encode_sql_time(
var tm_date: TTimeDateRec;
ib_time: PISC_TIME); external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_encode_timestamp')]
procedure isc_encode_timestamp(
var tm_date: TTimeDateRec;
ib_timestamp: PISC_TIMESTAMP); external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_event_counts')]
procedure isc_event_counts(
status_vector : PISC_STATUS;
buffer_length : Short;
event_buffer : TSDCharPtr;
result_buffer : TSDCharPtr); external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_get_segment')]
function isc_get_segment(
status_vector : PISC_STATUS;
var blob_handle : TISC_BLOB_HANDLE;
var actual_seg_length : UShort;
seg_buffer_length : UShort;
seg_buffer : TSDCharPtr): ISC_STATUS; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_interprete')]
function isc_interprete(
buffer : TSDCharPtr;
var status_vector : PISC_STATUS): ISC_STATUS; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_open_blob')]
function isc_open_blob(
status_vector : PISC_STATUS;
db_handle : PISC_DB_HANDLE;
tran_handle : PISC_TR_HANDLE;
var blob_handle : TISC_BLOB_HANDLE;
blob_id : PISC_QUAD): ISC_STATUS; external;
[DllImport(DefSqlApiDLL, CharSet = CharSet.Ansi, SetLastError = True, EntryPoint = 'isc_open_blob2')]
function isc_open_blob2(
status_vector : PISC_STATUS;
db_handle : PISC_DB_HANDLE;
tran_handle : PISC_TR_HANDLE;
var blob_handle : TISC_BLOB_HANDLE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -