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

📄 fastdbcli.pas

📁 俄国人写的内存数据库的delphi封装
💻 PAS
📖 第 1 页 / 共 5 页
字号:
{********************************************************************
  cli_get_last
    Get last row of the selection.
  Parameters:
    statement - statememt descriptor returned by cli_statement
  Returns:
    result code as described in cli_result_code enum
--------------------------------------------------------------------}
  cli_get_last: function(statement: Integer): Integer cdecl;

{********************************************************************
  cli_get_next
    Get next row of the selection. If get_next records is called
    exactly after cli_fetch function call, is will fetch the first record
    in selection.
  Parameters:
    statement - statememt descriptor returned by cli_statement
  Returns:
    result code as described in cli_result_code enum
--------------------------------------------------------------------}
  cli_get_next: function(statement: Integer): Integer cdecl;

{********************************************************************
  cli_get_prev
    Get previous row of the selection. If get_next records is called
    exactly after cli_fetch function call, is will fetch the last record
    in selection.
  Parameters:
    statement - statememt descriptor returned by cli_statement
  Returns:
    result code as described in cli_result_code enum
--------------------------------------------------------------------}
  cli_get_prev: function(statement: Integer): Integer cdecl;

{*********************************************************************
 * cli_skip
 *     Skip specified number of rows.
 * Parameters:
 *     statement  - statememt descriptor returned by cli_statement
 *     n          - number of objects to be skipped
 *                - if "n" is positive, then this function has the same effect as
 *                     executing cli_get_next() function "n" times.
 *                - if "n" is negative, then this function has the same effect as
 *                     executing cli_get_prev() function "-n" times.
 *                - if "n"  is zero, this method has no effect
 * Returns:
 *     result code as described in cli_result_code enum
 *}
  cli_skip: function(statement: Integer; n: Integer): Integer cdecl;

{*********************************************************************
 * cli_seek
 *    Position cursor to the record with specified OID
 * Parameters:
 *     statement   - statememt descriptor returned by cli_statement
 *     oid         - object identifier of the record to which cursor should be positioned
 * Returns:
 *     >= 0 - success, position of the record in the selection
 *     <  0 - error code as described in cli_result_code enum
 *}
  cli_seek: function(statement: Integer; oid: cli_oid_t): Integer cdecl;

{********************************************************************
  cli_get_oid
    Get object identifier of the current record
  Parameters:
    statement - statememt descriptor returned by cli_statement
  Returns:
    object identifier or 0 if no object is seleected
--------------------------------------------------------------------}
  cli_get_oid: function(statement: Integer): cli_oid_t cdecl;

{********************************************************************
  cli_update
    Update the current row in the selection. You have to set
    for_update parameter of cli_fetch to 1 in order to be able
    to perform updates. Updated value of row fields will be taken
    from bound column variables.
  Parameters:
    statement - statememt descriptor returned by cli_statement
  Returns:
    result code as described in cli_result_code enum
--------------------------------------------------------------------}
  cli_update: function(statement: Integer): Integer cdecl;

{********************************************************************
  cli_remove
    Remove all selected records. You have to set
    for_update parameter of cli_fetch to 1 in order to be able
    to remove records.
  Parameters:
    statement - statememt descriptor returned by cli_statement
  Returns:
    result code as described in cli_result_code enum
--------------------------------------------------------------------}
  cli_remove: function(statement: Integer): Integer cdecl;

{********************************************************************
  cli_free
    Deallocate statement and all associated data
  Parameters:
    statement - statememt descriptor returned by cli_statement
  Returns:
    result code as described in cli_result_code enum
--------------------------------------------------------------------}
  cli_free: function(statement: Integer): Integer cdecl;

{********************************************************************
  cli_commit
    Commit current database transaction
  Parameters:
    session - session descriptor as returned by cli_open
  Returns:
    result code as described in cli_result_code enum
--------------------------------------------------------------------}
  cli_commit: function(session: Integer): Integer cdecl;

{********************************************************************
  cli_precommit
    Release all locks set by transaction. This methods allows other clients
    to proceed, but it doesn't flush transaction to the disk.
  Parameters:
    session - session descriptor as returned by cli_open
  Returns:
    result code as described in cli_result_code enum
--------------------------------------------------------------------}
  cli_precommit: function(session: Integer): Integer cdecl;

{********************************************************************
  cli_abort
    Abort current database transaction
  Parameters:
    session - session descriptor as returned by cli_open
  Returns:
    result code as described in cli_result_code enum
--------------------------------------------------------------------}
  cli_abort: function(session: Integer): Integer cdecl;

{*********************************************************************
 * cli_freeze
 *    Freeze cursor
 * Parameters:
 *     statement   - statememt descriptor returned by cli_statement
 * Returns:
 *     result code as described in cli_result_code enum
 *}
  cli_freeze: function(Statement: Integer): Integer; cdecl;

{*********************************************************************
 * cli_unfreeze
 *    Unfreeze cursor
 * Parameters:
 *     statement   - statememt descriptor returned by cli_statement
 * Returns:
 *     result code as described in cli_result_code enum
 *}
  cli_unfreeze: function(Statement: Integer): Integer; cdecl;

{*********************************************************************
 * cli_attach
 *    Attach thread to the database. Each thread except one opened the database should first
 *    attach to the database before any access to the database, and detach after end of the work with database
 * Parameters:
 *     session - session descriptor returned by cli_open
 * Returns:
 *     result code as described in cli_result_code enum
 *}
var
  cli_attach: function(session: Integer): Integer; cdecl;

{*********************************************************************
 * cli_detach
 *    Detach thread from the database. Each thread except one opened the database should perform
 *    attach to the database before any access to the database, and detach after end of the work with database
 * Parameters:
 *     session - session descriptor returned by cli_open
 *     detach_mode - bit mask representing detach mode
 * Returns:
 *     result code as described in cli_result_code enum
 *}
const
  cli_commit_on_detach          = 1;
  cli_destroy_context_on_detach = 2;

type
  TDetachMode  = (dtPreCommit, dtCommit, dtDestroyContext);
  TDetachModes = set of TDetachMode;

function cli_detach(session: Integer; DetachMode: TDetachModes): Integer;

const
  cli_hashed  = 1; { field should be indexed usnig hash table }
  cli_indexed = 2; { field should be indexed using B-Tree }
  {$IFDEF GIGABASE}
  cli_case_insensitive    = 8;  { index is case insensitive }
  cli_unique              = 16; { index containing unique keys }
  cli_optimize_duplicates = 64; { index with lot of duplicate key values }
  {$ENDIF}

type
  TIndexType = (itHash, itTree {$IFDEF GIGABASE}, itCaseInsensitive, itUnique, itOptimizeDuplicates{$ENDIF});
  TIndexTypes = set of TIndexType;

  //PCliFieldDescriptor = ^cli_field_descriptor;
  cli_field_descriptor = record
    FieldType: Integer;
    flags: Integer;
    name: PCHAR;
    refTableName: PCHAR;
    inverseRefFieldName: PCHAR;
  end {cli_field_descriptor};
  TCliFieldDescriptor  = cli_field_descriptor;
  PCliFieldDescriptor  = ^TCliFieldDescriptor;
  PPCliFieldDescriptor = ^PCliFieldDescriptor;
  TFieldDescriptors    = array of TCliFieldDescriptor;
  //PPACliFieldDescriptor = TACliFieldDescriptor;

{********************************************************************
  cli_describe
    Describe fileds of specified table
  Parameters:
    session - session descriptor as returned by cli_open
    table - name of the table
    fields - adress of the pointer to the array of fields descriptors,
    this array should be later deallocated by application by cli_free_memory()
  Returns:
    >= 0 - number of fields in the table
    < 0 - result code as described in cli_result_code enum
--------------------------------------------------------------------}
var
  cli_describe: function(session: Integer;
                         const table: PChar;
                         fields: PPCliFieldDescriptor): Integer cdecl;


{*********************************************************************
 * cli_get_field_size
 *     Calculate field size
 * Parameters:
 *     fields   - array with fields descriptors obtained using cli_describe function
 *     field_no - number of the field
 *}
var
  cli_get_field_size: function(fields: PPCliFieldDescriptor; field_no: Integer): Integer; cdecl;

{*********************************************************************
 * cli_get_field_offset
 *     Calculate offset of the field
 * Parameters:
 *     fields   - array with fields descriptors obtained using cli_describe function
 *     field_no - number of the field
 *}
var
  cli_get_field_offset: function(fields: PPCliFieldDescriptor; field_no: Integer): Integer; cdecl;

type
  cli_table_descriptor = record
    name: PCHAR;
  end {cli_table_descriptor};
  PCliTableDescriptor = ^cli_table_descriptor;
  //PACliTableDescriptor = array of PCliTableDescriptor;
  //PPACliTableDescriptor = ^PACliTableDescriptor;

{********************************************************************
  cli_show_tables
    Show all tables of specified database
  Parameters:
    session - session descriptor as returned by cli_open
    tables - address of the pointer to the array of tables descriptors,
             this array should be later deallocated by application by
             cli_free_memory()
  Returns:
    >= 0 - number of tables in the database (Metatable is not returned/counted)
    < 0 - result code as described in cli_result_code enum
--------------------------------------------------------------------}
var
  cli_show_tables: function(session: Integer;
                            var tables: PCliTableDescriptor): Integer cdecl;


{********************************************************************
  cli_create_table
    Create new table
  Parameters:
    session - session descriptor as returned by cli_open
    tableName - name of new table
    nFields - number of columns in the table
    fields - array with table columns descriptors
             this array should be later deallocated by application by
             __free() or SysFreeMem()
  Returns:
    result code as described in cli_result_code enum
--------------------------------------------------------------------}
  cli_create_table: function(session: Integer;
                             const tableName: PChar;
                             nFields: Integer;
                             fields: PCliFieldDescriptor): Integer cdecl;

{*********************************************************************
  cli_alter_table
      Change table format
  Parameters:
      session   - session descriptor as returned by cli_open
      tableName - name of existing table
      nFields   - number of columns in the table
      fields    - array with new table columns descriptors
  Returns:

⌨️ 快捷键说明

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