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

📄 sdfib.pas

📁 SQLDirect Component Library is a light-weight Borland Database Engine replacement for Borland Delphi
💻 PAS
📖 第 1 页 / 共 2 页
字号:

{*******************************************************}
{							}
{       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 + -