00001 {*********************************************************}
00002 { }
00003 { Zeos Database Objects }
00004 { Native Plain Drivers for Interbase }
00005 { }
00006 { Originally written by Sergey Seroukhov }
00007 { }
00008 {*********************************************************}
00009
00010 {@********************************************************}
00011 { Copyright (c) 1999-2006 Zeos Development Group }
00012 { }
00013 { License Agreement: }
00014 { }
00015 { This library is distributed in the hope that it will be }
00016 { useful, but WITHOUT ANY WARRANTY; without even the }
00017 { implied warranty of MERCHANTABILITY or FITNESS FOR }
00018 { A PARTICULAR PURPOSE. See the GNU Lesser General }
00019 { Public License for more details. }
00020 { }
00021 { The source code of the ZEOS Libraries and packages are }
00022 { distributed under the Library GNU General Public }
00023 { License (see the file COPYING / COPYING.ZEOS) }
00024 { with the following modification: }
00025 { As a special exception, the copyright holders of this }
00026 { library give you permission to link this library with }
00027 { independent modules to produce an executable, }
00028 { regardless of the license terms of these independent }
00029 { modules, and to copy and distribute the resulting }
00030 { executable under terms of your choice, provided that }
00031 { you also meet, for each linked independent module, }
00032 { the terms and conditions of the license of that module. }
00033 { An independent module is a module which is not derived }
00034 { from or based on this library. If you modify this }
00035 { library, you may extend this exception to your version }
00036 { of the library, but you are not obligated to do so. }
00037 { If you do not wish to do so, delete this exception }
00038 { statement from your version. }
00039 { }
00040 { }
00041 { The project web site is located on: }
00042 { http:
00043 { http:
00044 { svn:
00045 { }
00046 { http:
00047 { http:
00048 { }
00049 { }
00050 { }
00051 { Zeos Development Group. }
00052 {********************************************************@}
00053
00054 unit ZPlainFirebirdDriver;
00055
00056 interface
00057
00058 {$I ZPlain.inc}
00059
00060 uses ZClasses, ZCompatibility, ZPlainDriver,ZPlainInterbaseDriver,
00061 ZPlainFirebirdInterbaseConstants;
00062
00063 const
00064
00065 WINDOWS2_DLL_LOCATION = 'fbclient.dll';
00066 WINDOWS2_DLL_LOCATION_EMBEDDED = 'fbclientd.dll';
00067
00068 LINUX2_DLL_LOCATION = 'libfbclient.so';
00069 LINUX2_DLL_LOCATION_EMBEDDED = 'libfbembed.so';
00070 LINUX2_IB_CRYPT_LOCATION = 'libcrypt.so';
00071
00072 type
00073
00074 {** Represents an interface to Interbase 6+ native API. }
00075 IZFirebird10PlainDriver = interface (IZInterbasePlainDriver)
00076 ['{AFCC45CF-CF6D-499B-8EC2-5C1737A59E30}']
00077 end;
00078
00079 {** Represents class to Interbase 6+ native API. }
00080 TZFirebird10PlainDriver = class (TZAbstractObject, IZPlainDriver,
00081 IZInterbasePlainDriver, IZFirebird10PlainDriver)
00082 public
00083 constructor Create;
00084
00085 function GetProtocol: string;
00086 function GetDescription: string;
00087 procedure Initialize;
00088
00089 function isc_attach_database (status_vector: PISC_STATUS;
00090 db_name_length: Short; db_name: PChar; db_handle: PISC_DB_HANDLE;
00091 parm_buffer_length: Short; parm_buffer: PChar): ISC_STATUS;
00092 function isc_detach_database(status_vector: PISC_STATUS;
00093 db_handle: PISC_DB_HANDLE): ISC_STATUS;
00094 function isc_drop_database(status_vector: PISC_STATUS;
00095 db_handle: PISC_DB_HANDLE): ISC_STATUS;
00096 function isc_database_info(status_vector: PISC_STATUS;
00097 db_handle: PISC_DB_HANDLE; item_list_buffer_length: Short;
00098 item_list_buffer: PChar; result_buffer_length: Short;
00099 result_buffer: PChar): ISC_STATUS;
00100 function isc_transaction_info(status_vector: PISC_STATUS;
00101 tr_handle: PISC_TR_HANDLE; item_list_buffer_length: Short;
00102 item_list_buffer: PChar; result_buffer_length: Short;
00103 result_buffer: PChar): ISC_STATUS;
00104 function isc_array_gen_sdl(status_vector: PISC_STATUS;
00105 isc_array_desc: PISC_ARRAY_DESC; isc_arg3: PShort;
00106 isc_arg4: PChar; isc_arg5: PShort): ISC_STATUS;
00107 function isc_array_get_slice(status_vector: PISC_STATUS;
00108 db_handle: PISC_DB_HANDLE; trans_handle: PISC_TR_HANDLE;
00109 array_id: PISC_QUAD; descriptor: PISC_ARRAY_DESC;
00110 dest_array: PVoid; slice_length: ISC_LONG): ISC_STATUS;
00111 function isc_array_lookup_bounds(status_vector: PISC_STATUS;
00112 db_handle: PISC_DB_HANDLE; trans_handle: PISC_TR_HANDLE;
00113 table_name, column_name: PChar;
00114 descriptor: PISC_ARRAY_DESC): ISC_STATUS;
00115 function isc_array_lookup_desc(status_vector: PISC_STATUS;
00116 db_handle: PISC_DB_HANDLE; trans_handle: PISC_TR_HANDLE;
00117 table_name, column_name: PChar;
00118 descriptor: PISC_ARRAY_DESC): ISC_STATUS;
00119 function isc_array_set_desc(status_vector: PISC_STATUS;
00120 table_name: PChar; column_name: PChar;
00121 sql_dtype, sql_length, sql_dimensions: PShort;
00122 descriptor: PISC_ARRAY_DESC): ISC_STATUS;
00123 function isc_array_put_slice(status_vector: PISC_STATUS;
00124 db_handle: PISC_DB_HANDLE; trans_handle: PISC_TR_HANDLE;
00125 array_id: PISC_QUAD; descriptor: PISC_ARRAY_DESC;
00126 source_array: PVoid; slice_length: PISC_LONG): ISC_STATUS;
00127 function isc_free(isc_arg1: PChar): ISC_LONG;
00128 function isc_sqlcode(status_vector: PISC_STATUS): ISC_LONG;
00129 procedure isc_sql_interprete(sqlcode: Short; buffer: PChar;
00130 buffer_length: Short);
00131 function isc_interprete(buffer: PChar; status_vector: PPISC_STATUS): ISC_STATUS;
00132 function isc_start_transaction(status_vector: PISC_STATUS;
00133 tran_handle: PISC_TR_HANDLE; db_handle_count: Short;
00134 db_handle: PISC_DB_HANDLE; tpb_length: Word; tpb_address: PChar): ISC_STATUS;
00135 function isc_start_multiple(status_vector: PISC_STATUS;
00136 tran_handle: PISC_TR_HANDLE; db_handle_count: Short;
00137 teb_vector_address: PISC_TEB): ISC_STATUS;
00138 function isc_rollback_transaction(status_vector: PISC_STATUS;
00139 tran_handle: PISC_TR_HANDLE): ISC_STATUS;
00140 function isc_rollback_retaining(status_vector: PISC_STATUS;
00141 tran_handle: PISC_TR_HANDLE): ISC_STATUS;
00142 function isc_commit_retaining(status_vector: PISC_STATUS;
00143 tran_handle: PISC_TR_HANDLE): ISC_STATUS;
00144 function isc_commit_transaction(status_vector: PISC_STATUS;
00145 tran_handle: PISC_TR_HANDLE): ISC_STATUS;
00146 function isc_dsql_allocate_statement(status_vector: PISC_STATUS;
00147 db_handle: PISC_DB_HANDLE; stmt_handle: PISC_STMT_HANDLE): ISC_STATUS;
00148 function isc_dsql_alloc_statement2(status_vector: PISC_STATUS;
00149 db_handle: PISC_DB_HANDLE; stmt_handle: PISC_STMT_HANDLE): ISC_STATUS;
00150 function isc_dsql_describe(status_vector: PISC_STATUS;
00151 stmt_handle: PISC_STMT_HANDLE; dialect: Word; xsqlda: PXSQLDA): ISC_STATUS;
00152 function isc_dsql_describe_bind(status_vector: PISC_STATUS;
00153 stmt_handle: PISC_STMT_HANDLE; dialect: Word; xsqlda: PXSQLDA): ISC_STATUS;
00154 function isc_dsql_execute(status_vector: PISC_STATUS;
00155 tran_handle: PISC_TR_HANDLE; stmt_handle: PISC_STMT_HANDLE; dialect: Word;
00156 xsqlda: PXSQLDA): ISC_STATUS;
00157 function isc_dsql_execute2(status_vector: PISC_STATUS;
00158 tran_handle: PISC_TR_HANDLE; stmt_handle: PISC_STMT_HANDLE; dialect: Word;
00159 in_xsqlda, out_xsqlda: PXSQLDA): ISC_STATUS;
00160 function isc_dsql_execute_immediate(status_vector: PISC_STATUS;
00161 db_handle: PISC_DB_HANDLE; tran_handle: PISC_TR_HANDLE; length: Word;
00162 statement: PChar; dialect: Word; xsqlda: PXSQLDA): ISC_STATUS;
00163 function isc_dsql_fetch(status_vector: PISC_STATUS;
00164 stmt_handle: PISC_STMT_HANDLE; dialect: Word; xsqlda: PXSQLDA): ISC_STATUS;
00165 function isc_dsql_free_statement(status_vector: PISC_STATUS;
00166 stmt_handle: PISC_STMT_HANDLE; options: Word): ISC_STATUS;
00167 function isc_dsql_prepare(status_vector: PISC_STATUS;
00168 tran_handle: PISC_TR_HANDLE; stmt_handle: PISC_STMT_HANDLE;
00169 length: Word; statement: PChar; dialect: Word; xsqlda: PXSQLDA): ISC_STATUS;
00170 function isc_dsql_set_cursor_name(status_vector: PISC_STATUS;
00171 stmt_handle: PISC_STMT_HANDLE; cursor_name: PChar; _type: Word): ISC_STATUS;
00172 function isc_dsql_sql_info(status_vector: PISC_STATUS;
00173 stmt_handle: PISC_STMT_HANDLE; item_length: Short; items: PChar;
00174 buffer_length: Short; buffer: PChar): ISC_STATUS;
00175 function isc_open_blob2(status_vector: PISC_STATUS;
00176 db_handle: PISC_DB_HANDLE; tran_handle: PISC_TR_HANDLE;
00177 blob_handle: PISC_BLOB_HANDLE; blob_id: PISC_QUAD; bpb_length: Short;
00178 bpb_buffer: PChar): ISC_STATUS;
00179 function isc_create_blob2(status_vector: PISC_STATUS;
00180 db_handle: PISC_DB_HANDLE; tran_handle: PISC_TR_HANDLE;
00181 blob_handle: PISC_BLOB_HANDLE; blob_id: PISC_QUAD; bpb_length: Short;
00182 bpb_address: PChar): ISC_STATUS;
00183 function isc_blob_info(status_vector: PISC_STATUS;
00184 blob_handle: PISC_BLOB_HANDLE; item_list_buffer_length: Short;
00185 item_list_buffer: PChar; result_buffer_length: Short; result_buffer: PChar): PISC_STATUS;
00186 function isc_close_blob(status_vector: PISC_STATUS;
00187 blob_handle: PISC_BLOB_HANDLE): ISC_STATUS;
00188 function isc_cancel_blob(status_vector: PISC_STATUS;
00189 blob_handle: PISC_BLOB_HANDLE): ISC_STATUS;
00190 function isc_get_segment(status_vector: PISC_STATUS;
00191 blob_handle: PISC_BLOB_HANDLE; actual_seg_length: PWord;
00192 seg_buffer_length: Word; seg_buffer: PChar): ISC_STATUS;
00193 function isc_put_segment(status_vector: PISC_STATUS;
00194 blob_handle: PISC_BLOB_HANDLE; seg_buffer_len: Word; seg_buffer: PChar): ISC_STATUS;
00195 function isc_event_block(event_buffer: PPChar; result_buffer: PPChar;
00196 id_count: Word; event_list: array of PChar): ISC_LONG;
00197 procedure isc_event_counts(status_vector: PISC_STATUS;
00198 buffer_length: Short; event_buffer: PChar; result_buffer: PChar);
00199 function isc_cancel_events(status_vector: PISC_STATUS;
00200 db_handle: PISC_DB_HANDLE; event_id: PISC_LONG): ISC_STATUS;
00201 function isc_que_events(status_vector: PISC_STATUS;
00202 db_handle: PISC_DB_HANDLE; event_id: PISC_LONG; length: Short;
00203 event_buffer: PChar; event_function: TISC_CALLBACK;
00204 event_function_arg: PVoid): ISC_STATUS;
00205 procedure isc_decode_date(ib_date: PISC_QUAD; tm_date: PCTimeStructure);
00206 procedure isc_encode_date(tm_date: PCTimeStructure; ib_date: PISC_QUAD);
00207 { Interbase Version 6 routines }
00208 procedure isc_decode_sql_date(ib_date: PISC_DATE; tm_date: PCTimeStructure);
00209 procedure isc_decode_sql_time(ib_time: PISC_TIME; tm_date: PCTimeStructure);
00210 procedure isc_decode_timestamp(ib_timestamp: PISC_TIMESTAMP;
00211 tm_date: PCTimeStructure);
00212 procedure isc_encode_sql_date(tm_date: PCTimeStructure;
00213 ib_date: PISC_DATE);
00214 procedure isc_encode_sql_time(tm_date: PCTimeStructure;
00215 ib_time: PISC_TIME);
00216 procedure isc_encode_timestamp(tm_date: PCTimeStructure;
00217 ib_timestamp: PISC_TIMESTAMP);
00218 function isc_vax_integer(buffer: PChar; length: Short): ISC_LONG;
00219 end;
00220
00221 {** Represents an interface to Interbase 6+ native API. }
00222 IZFirebird15PlainDriver = interface (IZInterbasePlainDriver)
00223 ['{AFCC45CF-CF6D-499B-8EC2-5C1737A59E30}']
00224 end;
00225
00226 {** Represents class to Interbase 6+ native API. }
00227 TZFirebird15PlainDriver = class (TZAbstractObject, IZPlainDriver,
00228 IZInterbasePlainDriver, IZFirebird15PlainDriver)
00229 public
00230 constructor Create;
00231
00232 function GetProtocol: string;virtual;
00233 function GetDescription: string;virtual;
00234 procedure Initialize;virtual;
00235
00236 function isc_attach_database (status_vector: PISC_STATUS;
00237 db_name_length: Short; db_name: PChar; db_handle: PISC_DB_HANDLE;
00238 parm_buffer_length: Short; parm_buffer: PChar): ISC_STATUS;
00239 function isc_detach_database(status_vector: PISC_STATUS;
00240 db_handle: PISC_DB_HANDLE): ISC_STATUS;
00241 function isc_drop_database(status_vector: PISC_STATUS;
00242 db_handle: PISC_DB_HANDLE): ISC_STATUS;
00243 function isc_database_info(status_vector: PISC_STATUS;
00244 db_handle: PISC_DB_HANDLE; item_list_buffer_length: Short;
00245 item_list_buffer: PChar; result_buffer_length: Short;
00246 result_buffer: PChar): ISC_STATUS;
00247 function isc_transaction_info(status_vector: PISC_STATUS;
00248 tr_handle: PISC_TR_HANDLE; item_list_buffer_length: Short;
00249 item_list_buffer: PChar; result_buffer_length: Short;
00250 result_buffer: PChar): ISC_STATUS;
00251 function isc_array_gen_sdl(status_vector: PISC_STATUS;
00252 isc_array_desc: PISC_ARRAY_DESC; isc_arg3: PShort;
00253 isc_arg4: PChar; isc_arg5: PShort): ISC_STATUS;
00254 function isc_array_get_slice(status_vector: PISC_STATUS;
00255 db_handle: PISC_DB_HANDLE; trans_handle: PISC_TR_HANDLE;
00256 array_id: PISC_QUAD; descriptor: PISC_ARRAY_DESC;
00257 dest_array: PVoid; slice_length: ISC_LONG): ISC_STATUS;
00258 function isc_array_lookup_bounds(status_vector: PISC_STATUS;
00259 db_handle: PISC_DB_HANDLE; trans_handle: PISC_TR_HANDLE;
00260 table_name, column_name: PChar;
00261 descriptor: PISC_ARRAY_DESC): ISC_STATUS;
00262 function isc_array_lookup_desc(status_vector: PISC_STATUS;
00263 db_handle: PISC_DB_HANDLE; trans_handle: PISC_TR_HANDLE;
00264 table_name, column_name: PChar;
00265 descriptor: PISC_ARRAY_DESC): ISC_STATUS;
00266 function isc_array_set_desc(status_vector: PISC_STATUS;
00267 table_name: PChar; column_name: PChar;
00268 sql_dtype, sql_length, sql_dimensions: PShort;
00269 descriptor: PISC_ARRAY_DESC): ISC_STATUS;
00270 function isc_array_put_slice(status_vector: PISC_STATUS;
00271 db_handle: PISC_DB_HANDLE; trans_handle: PISC_TR_HANDLE;
00272 array_id: PISC_QUAD; descriptor: PISC_ARRAY_DESC;
00273 source_array: PVoid; slice_length: PISC_LONG): ISC_STATUS;
00274 function isc_free(isc_arg1: PChar): ISC_LONG;
00275 function isc_sqlcode(status_vector: PISC_STATUS): ISC_LONG;
00276 procedure isc_sql_interprete(sqlcode: Short; buffer: PChar;
00277 buffer_length: Short);
00278 function isc_interprete(buffer: PChar; status_vector: PPISC_STATUS): ISC_STATUS;
00279 function isc_start_transaction(status_vector: PISC_STATUS;
00280 tran_handle: PISC_TR_HANDLE; db_handle_count: Short;
00281 db_handle: PISC_DB_HANDLE; tpb_length: Word; tpb_address: PChar): ISC_STATUS;
00282 function isc_start_multiple(status_vector: PISC_STATUS;
00283 tran_handle: PISC_TR_HANDLE; db_handle_count: Short;
00284 teb_vector_address: PISC_TEB): ISC_STATUS;
00285 function isc_rollback_transaction(status_vector: PISC_STATUS;
00286 tran_handle: PISC_TR_HANDLE): ISC_STATUS;
00287 function isc_rollback_retaining(status_vector: PISC_STATUS;
00288 tran_handle: PISC_TR_HANDLE): ISC_STATUS;
00289 function isc_commit_retaining(status_vector: PISC_STATUS;
00290 tran_handle: PISC_TR_HANDLE): ISC_STATUS;
00291 function isc_commit_transaction(status_vector: PISC_STATUS;
00292 tran_handle: PISC_TR_HANDLE): ISC_STATUS;
00293 function isc_dsql_allocate_statement(status_vector: PISC_STATUS;
00294 db_handle: PISC_DB_HANDLE; stmt_handle: PISC_STMT_HANDLE): ISC_STATUS;
00295 function isc_dsql_alloc_statement2(status_vector: PISC_STATUS;
00296 db_handle: PISC_DB_HANDLE; stmt_handle: PISC_STMT_HANDLE): ISC_STATUS;
00297 function isc_dsql_describe(status_vector: PISC_STATUS;
00298 stmt_handle: PISC_STMT_HANDLE; dialect: Word; xsqlda: PXSQLDA): ISC_STATUS;
00299 function isc_dsql_describe_bind(status_vector: PISC_STATUS;
00300 stmt_handle: PISC_STMT_HANDLE; dialect: Word; xsqlda: PXSQLDA): ISC_STATUS;
00301 function isc_dsql_execute(status_vector: PISC_STATUS;
00302 tran_handle: PISC_TR_HANDLE; stmt_handle: PISC_STMT_HANDLE; dialect: Word;
00303 xsqlda: PXSQLDA): ISC_STATUS;
00304 function isc_dsql_execute2(status_vector: PISC_STATUS;
00305 tran_handle: PISC_TR_HANDLE; stmt_handle: PISC_STMT_HANDLE; dialect: Word;
00306 in_xsqlda, out_xsqlda: PXSQLDA): ISC_STATUS;
00307 function isc_dsql_execute_immediate(status_vector: PISC_STATUS;
00308 db_handle: PISC_DB_HANDLE; tran_handle: PISC_TR_HANDLE; length: Word;
00309 statement: PChar; dialect: Word; xsqlda: PXSQLDA): ISC_STATUS;
00310 function isc_dsql_fetch(status_vector: PISC_STATUS;
00311 stmt_handle: PISC_STMT_HANDLE; dialect: Word; xsqlda: PXSQLDA): ISC_STATUS;
00312 function isc_dsql_free_statement(status_vector: PISC_STATUS;
00313 stmt_handle: PISC_STMT_HANDLE; options: Word): ISC_STATUS;
00314 function isc_dsql_prepare(status_vector: PISC_STATUS;
00315 tran_handle: PISC_TR_HANDLE; stmt_handle: PISC_STMT_HANDLE;
00316 length: Word; statement: PChar; dialect: Word; xsqlda: PXSQLDA): ISC_STATUS;
00317 function isc_dsql_set_cursor_name(status_vector: PISC_STATUS;
00318 stmt_handle: PISC_STMT_HANDLE; cursor_name: PChar; _type: Word): ISC_STATUS;
00319 function isc_dsql_sql_info(status_vector: PISC_STATUS;
00320 stmt_handle: PISC_STMT_HANDLE; item_length: Short; items: PChar;
00321 buffer_length: Short; buffer: PChar): ISC_STATUS;
00322 function isc_open_blob2(status_vector: PISC_STATUS;
00323 db_handle: PISC_DB_HANDLE; tran_handle: PISC_TR_HANDLE;
00324 blob_handle: PISC_BLOB_HANDLE; blob_id: PISC_QUAD; bpb_length: Short;
00325 bpb_buffer: PChar): ISC_STATUS;
00326 function isc_create_blob2(status_vector: PISC_STATUS;
00327 db_handle: PISC_DB_HANDLE; tran_handle: PISC_TR_HANDLE;
00328 blob_handle: PISC_BLOB_HANDLE; blob_id: PISC_QUAD; bpb_length: Short;
00329 bpb_address: PChar): ISC_STATUS;
00330 function isc_blob_info(status_vector: PISC_STATUS;
00331 blob_handle: PISC_BLOB_HANDLE; item_list_buffer_length: Short;
00332 item_list_buffer: PChar; result_buffer_length: Short; result_buffer: PChar): PISC_STATUS;
00333 function isc_close_blob(status_vector: PISC_STATUS;
00334 blob_handle: PISC_BLOB_HANDLE): ISC_STATUS;
00335 function isc_cancel_blob(status_vector: PISC_STATUS;
00336 blob_handle: PISC_BLOB_HANDLE): ISC_STATUS;
00337 function isc_get_segment(status_vector: PISC_STATUS;
00338 blob_handle: PISC_BLOB_HANDLE; actual_seg_length: PWord;
00339 seg_buffer_length: Word; seg_buffer: PChar): ISC_STATUS;
00340 function isc_put_segment(status_vector: PISC_STATUS;
00341 blob_handle: PISC_BLOB_HANDLE; seg_buffer_len: Word; seg_buffer: PChar): ISC_STATUS;
00342 function isc_event_block(event_buffer: PPChar; result_buffer: PPChar;
00343 id_count: Word; event_list: array of PChar): ISC_LONG;
00344 procedure isc_event_counts(status_vector: PISC_STATUS;
00345 buffer_length: Short; event_buffer: PChar; result_buffer: PChar);
00346 function isc_cancel_events(status_vector: PISC_STATUS;
00347 db_handle: PISC_DB_HANDLE; event_id: PISC_LONG): ISC_STATUS;
00348 function isc_que_events(status_vector: PISC_STATUS;
00349 db_handle: PISC_DB_HANDLE; event_id: PISC_LONG; length: Short;
00350 event_buffer: PChar; event_function: TISC_CALLBACK;
00351 event_function_arg: PVoid): ISC_STATUS;
00352 procedure isc_decode_date(ib_date: PISC_QUAD; tm_date: PCTimeStructure);
00353 procedure isc_encode_date(tm_date: PCTimeStructure; ib_date: PISC_QUAD);
00354 { Interbase Version 6 routines }
00355 procedure isc_decode_sql_date(ib_date: PISC_DATE; tm_date: PCTimeStructure);
00356 procedure isc_decode_sql_time(ib_time: PISC_TIME; tm_date: PCTimeStructure);
00357 procedure isc_decode_timestamp(ib_timestamp: PISC_TIMESTAMP;
00358 tm_date: PCTimeStructure);
00359 procedure isc_encode_sql_date(tm_date: PCTimeStructure;
00360 ib_date: PISC_DATE);
00361 procedure isc_encode_sql_time(tm_date: PCTimeStructure;
00362 ib_time: PISC_TIME);
00363 procedure isc_encode_timestamp(tm_date: PCTimeStructure;
00364 ib_timestamp: PISC_TIMESTAMP);
00365 function isc_vax_integer(buffer: PChar; length: Short): ISC_LONG;
00366 end;
00367
00368 TZFirebirdD15PlainDriver = class (TZFirebird15PlainDriver)
00369 public
00370 function GetProtocol: string; override;
00371 function GetDescription: string; override;
00372 procedure Initialize; override;
00373 end;
00374
00375
00376 {** Represents an interface to Interbase 6+ native API. }
00377 IZFirebird20PlainDriver = interface (IZInterbasePlainDriver)
00378 ['{AFCC45CF-CF6D-499B-8EC2-5C1737A59E30}']
00379 end;
00380
00381 {** Represents class to Interbase 6+ native API. }
00382 TZFirebird20PlainDriver = class (TZAbstractObject, IZPlainDriver,
00383 IZInterbasePlainDriver, IZFirebird20PlainDriver)
00384 public
00385 constructor Create;
00386
00387 function GetProtocol: string;virtual;
00388 function GetDescription: string;virtual;
00389 procedure Initialize;virtual;
00390
00391 function isc_attach_database (status_vector: PISC_STATUS;
00392 db_name_length: Short; db_name: PChar; db_handle: PISC_DB_HANDLE;
00393 parm_buffer_length: Short; parm_buffer: PChar): ISC_STATUS;
00394 function isc_detach_database(status_vector: PISC_STATUS;
00395 db_handle: PISC_DB_HANDLE): ISC_STATUS;
00396 function isc_drop_database(status_vector: PISC_STATUS;
00397 db_handle: PISC_DB_HANDLE): ISC_STATUS;
00398 function isc_database_info(status_vector: PISC_STATUS;
00399 db_handle: PISC_DB_HANDLE; item_list_buffer_length: Short;
00400 item_list_buffer: PChar; result_buffer_length: Short;
00401 result_buffer: PChar): ISC_STATUS;
00402 function isc_transaction_info(status_vector: PISC_STATUS;
00403 tr_handle: PISC_TR_HANDLE; item_list_buffer_length: Short;
00404 item_list_buffer: PChar; result_buffer_length: Short;
00405 result_buffer: PChar): ISC_STATUS;
00406 function isc_array_gen_sdl(status_vector: PISC_STATUS;
00407 isc_array_desc: PISC_ARRAY_DESC; isc_arg3: PShort;
00408 isc_arg4: PChar; isc_arg5: PShort): ISC_STATUS;
00409 function isc_array_get_slice(status_vector: PISC_STATUS;
00410 db_handle: PISC_DB_HANDLE; trans_handle: PISC_TR_HANDLE;
00411 array_id: PISC_QUAD; descriptor: PISC_ARRAY_DESC;
00412 dest_array: PVoid; slice_length: ISC_LONG): ISC_STATUS;
00413 function isc_array_lookup_bounds(status_vector: PISC_STATUS;
00414 db_handle: PISC_DB_HANDLE; trans_handle: PISC_TR_HANDLE;
00415 table_name, column_name: PChar;
00416 descriptor: PISC_ARRAY_DESC): ISC_STATUS;
00417 function isc_array_lookup_desc(status_vector: PISC_STATUS;
00418 db_handle: PISC_DB_HANDLE; trans_handle: PISC_TR_HANDLE;
00419 table_name, column_name: PChar;
00420 descriptor: PISC_ARRAY_DESC): ISC_STATUS;
00421 function isc_array_set_desc(status_vector: PISC_STATUS;
00422 table_name: PChar; column_name: PChar;
00423 sql_dtype, sql_length, sql_dimensions: PShort;
00424 descriptor: PISC_ARRAY_DESC): ISC_STATUS;
00425 function isc_array_put_slice(status_vector: PISC_STATUS;
00426 db_handle: PISC_DB_HANDLE; trans_handle: PISC_TR_HANDLE;
00427 array_id: PISC_QUAD; descriptor: PISC_ARRAY_DESC;
00428 source_array: PVoid; slice_length: PISC_LONG): ISC_STATUS;
00429 function isc_free(isc_arg1: PChar): ISC_LONG;
00430 function isc_sqlcode(status_vector: PISC_STATUS): ISC_LONG;
00431 procedure isc_sql_interprete(sqlcode: Short; buffer: PChar;
00432 buffer_length: Short);
00433 function isc_interprete(buffer: PChar; status_vector: PPISC_STATUS): ISC_STATUS;
00434 function isc_start_transaction(status_vector: PISC_STATUS;
00435 tran_handle: PISC_TR_HANDLE; db_handle_count: Short;
00436 db_handle: PISC_DB_HANDLE; tpb_length: Word; tpb_address: PChar): ISC_STATUS;
00437 function isc_start_multiple(status_vector: PISC_STATUS;
00438 tran_handle: PISC_TR_HANDLE; db_handle_count: Short;
00439 teb_vector_address: PISC_TEB): ISC_STATUS;
00440 function isc_rollback_transaction(status_vector: PISC_STATUS;
00441 tran_handle: PISC_TR_HANDLE): ISC_STATUS;
00442 function isc_rollback_retaining(status_vector: PISC_STATUS;
00443 tran_handle: PISC_TR_HANDLE): ISC_STATUS;
00444 function isc_commit_retaining(status_vector: PISC_STATUS;
00445 tran_handle: PISC_TR_HANDLE): ISC_STATUS;
00446 function isc_commit_transaction(status_vector: PISC_STATUS;
00447 tran_handle: PISC_TR_HANDLE): ISC_STATUS;
00448 function isc_dsql_allocate_statement(status_vector: PISC_STATUS;
00449 db_handle: PISC_DB_HANDLE; stmt_handle: PISC_STMT_HANDLE): ISC_STATUS;
00450 function isc_dsql_alloc_statement2(status_vector: PISC_STATUS;
00451 db_handle: PISC_DB_HANDLE; stmt_handle: PISC_STMT_HANDLE): ISC_STATUS;
00452 function isc_dsql_describe(status_vector: PISC_STATUS;
00453 stmt_handle: PISC_STMT_HANDLE; dialect: Word; xsqlda: PXSQLDA): ISC_STATUS;
00454 function isc_dsql_describe_bind(status_vector: PISC_STATUS;
00455 stmt_handle: PISC_STMT_HANDLE; dialect: Word; xsqlda: PXSQLDA): ISC_STATUS;
00456 function isc_dsql_execute(status_vector: PISC_STATUS;
00457 tran_handle: PISC_TR_HANDLE; stmt_handle: PISC_STMT_HANDLE; dialect: Word;
00458 xsqlda: PXSQLDA): ISC_STATUS;
00459 function isc_dsql_execute2(status_vector: PISC_STATUS;
00460 tran_handle: PISC_TR_HANDLE; stmt_handle: PISC_STMT_HANDLE; dialect: Word;
00461 in_xsqlda, out_xsqlda: PXSQLDA): ISC_STATUS;
00462 function isc_dsql_execute_immediate(status_vector: PISC_STATUS;
00463 db_handle: PISC_DB_HANDLE; tran_handle: PISC_TR_HANDLE; length: Word;
00464 statement: PChar; dialect: Word; xsqlda: PXSQLDA): ISC_STATUS;
00465 function isc_dsql_fetch(status_vector: PISC_STATUS;
00466 stmt_handle: PISC_STMT_HANDLE; dialect: Word; xsqlda: PXSQLDA): ISC_STATUS;
00467 function isc_dsql_free_statement(status_vector: PISC_STATUS;
00468 stmt_handle: PISC_STMT_HANDLE; options: Word): ISC_STATUS;
00469 function isc_dsql_prepare(status_vector: PISC_STATUS;
00470 tran_handle: PISC_TR_HANDLE; stmt_handle: PISC_STMT_HANDLE;
00471 length: Word; statement: PChar; dialect: Word; xsqlda: PXSQLDA): ISC_STATUS;
00472 function isc_dsql_set_cursor_name(status_vector: PISC_STATUS;
00473 stmt_handle: PISC_STMT_HANDLE; cursor_name: PChar; _type: Word): ISC_STATUS;
00474 function isc_dsql_sql_info(status_vector: PISC_STATUS;
00475 stmt_handle: PISC_STMT_HANDLE; item_length: Short; items: PChar;
00476 buffer_length: Short; buffer: PChar): ISC_STATUS;
00477 function isc_open_blob2(status_vector: PISC_STATUS;
00478 db_handle: PISC_DB_HANDLE; tran_handle: PISC_TR_HANDLE;
00479 blob_handle: PISC_BLOB_HANDLE; blob_id: PISC_QUAD; bpb_length: Short;
00480 bpb_buffer: PChar): ISC_STATUS;
00481 function isc_create_blob2(status_vector: PISC_STATUS;
00482 db_handle: PISC_DB_HANDLE; tran_handle: PISC_TR_HANDLE;
00483 blob_handle: PISC_BLOB_HANDLE; blob_id: PISC_QUAD; bpb_length: Short;
00484 bpb_address: PChar): ISC_STATUS;
00485 function isc_blob_info(status_vector: PISC_STATUS;
00486 blob_handle: PISC_BLOB_HANDLE; item_list_buffer_length: Short;
00487 item_list_buffer: PChar; result_buffer_length: Short; result_buffer: PChar): PISC_STATUS;
00488 function isc_close_blob(status_vector: PISC_STATUS;
00489 blob_handle: PISC_BLOB_HANDLE): ISC_STATUS;
00490 function isc_cancel_blob(status_vector: PISC_STATUS;
00491 blob_handle: PISC_BLOB_HANDLE): ISC_STATUS;
00492 function isc_get_segment(status_vector: PISC_STATUS;
00493 blob_handle: PISC_BLOB_HANDLE; actual_seg_length: PWord;
00494 seg_buffer_length: Word; seg_buffer: PChar): ISC_STATUS;
00495 function isc_put_segment(status_vector: PISC_STATUS;
00496 blob_handle: PISC_BLOB_HANDLE; seg_buffer_len: Word; seg_buffer: PChar): ISC_STATUS;
00497 function isc_event_block(event_buffer: PPChar; result_buffer: PPChar;
00498 id_count: Word; event_list: array of PChar): ISC_LONG;
00499 procedure isc_event_counts(status_vector: PISC_STATUS;
00500 buffer_length: Short; event_buffer: PChar; result_buffer: PChar);
00501 function isc_cancel_events(status_vector: PISC_STATUS;
00502 db_handle: PISC_DB_HANDLE; event_id: PISC_LONG): ISC_STATUS;
00503 function isc_que_events(status_vector: PISC_STATUS;
00504 db_handle: PISC_DB_HANDLE; event_id: PISC_LONG; length: Short;
00505 event_buffer: PChar; event_function: TISC_CALLBACK;
00506 event_function_arg: PVoid): ISC_STATUS;
00507 procedure isc_decode_date(ib_date: PISC_QUAD; tm_date: PCTimeStructure);
00508 procedure isc_encode_date(tm_date: PCTimeStructure; ib_date: PISC_QUAD);
00509 { Interbase Version 6 routines }
00510 procedure isc_decode_sql_date(ib_date: PISC_DATE; tm_date: PCTimeStructure);
00511 procedure isc_decode_sql_time(ib_time: PISC_TIME; tm_date: PCTimeStructure);
00512 procedure isc_decode_timestamp(ib_timestamp: PISC_TIMESTAMP;
00513 tm_date: PCTimeStructure);
00514 procedure isc_encode_sql_date(tm_date: PCTimeStructure;
00515 ib_date: PISC_DATE);
00516 procedure isc_encode_sql_time(tm_date: PCTimeStructure;
00517 ib_time: PISC_TIME);
00518 procedure isc_encode_timestamp(tm_date: PCTimeStructure;
00519 ib_timestamp: PISC_TIMESTAMP);
00520 function isc_vax_integer(buffer: PChar; length: Short): ISC_LONG;
00521 end;
00522
00523 TZFirebirdD20PlainDriver = class (TZFirebird20PlainDriver)
00524 public
00525 function GetProtocol: string; override;
00526 function GetDescription: string; override;
00527 procedure Initialize; override;
00528 end;
00529
00530 {** Represents an interface to Firebird 2.1 native API. }
00531 IZFirebird21PlainDriver = interface (IZInterbasePlainDriver)
00532 ['{AFCC45CF-CF6D-499B-8EC2-5C1737A59E30}']
00533 end;
00534
00535 {** Represents class to Interbase 6+ native API. }
00536 TZFirebird21PlainDriver = class (TZAbstractObject, IZPlainDriver,
00537 IZInterbasePlainDriver, IZFirebird21PlainDriver)
00538 public
00539 constructor Create;
00540
00541 function GetProtocol: string;virtual;
00542 function GetDescription: string;virtual;
00543 procedure Initialize;virtual;
00544
00545 function isc_attach_database (status_vector: PISC_STATUS;
00546 db_name_length: Short; db_name: PChar; db_handle: PISC_DB_HANDLE;
00547 parm_buffer_length: Short; parm_buffer: PChar): ISC_STATUS;
00548 function isc_detach_database(status_vector: PISC_STATUS;
00549 db_handle: PISC_DB_HANDLE): ISC_STATUS;
00550 function isc_drop_database(status_vector: PISC_STATUS;
00551 db_handle: PISC_DB_HANDLE): ISC_STATUS;
00552 function isc_database_info(status_vector: PISC_STATUS;
00553 db_handle: PISC_DB_HANDLE; item_list_buffer_length: Short;
00554 item_list_buffer: PChar; result_buffer_length: Short;
00555 result_buffer: PChar): ISC_STATUS;
00556 function isc_transaction_info(status_vector: PISC_STATUS;
00557 tr_handle: PISC_TR_HANDLE; item_list_buffer_length: Short;
00558 item_list_buffer: PChar; result_buffer_length: Short;
00559 result_buffer: PChar): ISC_STATUS;
00560 function isc_array_gen_sdl(status_vector: PISC_STATUS;
00561 isc_array_desc: PISC_ARRAY_DESC; isc_arg3: PShort;
00562 isc_arg4: PChar; isc_arg5: PShort): ISC_STATUS;
00563 function isc_array_get_slice(status_vector: PISC_STATUS;
00564 db_handle: PISC_DB_HANDLE; trans_handle: PISC_TR_HANDLE;
00565 array_id: PISC_QUAD; descriptor: PISC_ARRAY_DESC;
00566 dest_array: PVoid; slice_length: ISC_LONG): ISC_STATUS;
00567 function isc_array_lookup_bounds(status_vector: PISC_STATUS;
00568 db_handle: PISC_DB_HANDLE; trans_handle: PISC_TR_HANDLE;
00569 table_name, column_name: PChar;
00570 descriptor: PISC_ARRAY_DESC): ISC_STATUS;
00571 function isc_array_lookup_desc(status_vector: PISC_STATUS;
00572 db_handle: PISC_DB_HANDLE; trans_handle: PISC_TR_HANDLE;
00573 table_name, column_name: PChar;
00574 descriptor: PISC_ARRAY_DESC): ISC_STATUS;
00575 function isc_array_set_desc(status_vector: PISC_STATUS;
00576 table_name: PChar; column_name: PChar;
00577 sql_dtype, sql_length, sql_dimensions: PShort;
00578 descriptor: PISC_ARRAY_DESC): ISC_STATUS;
00579 function isc_array_put_slice(status_vector: PISC_STATUS;
00580 db_handle: PISC_DB_HANDLE; trans_handle: PISC_TR_HANDLE;
00581 array_id: PISC_QUAD; descriptor: PISC_ARRAY_DESC;
00582 source_array: PVoid; slice_length: PISC_LONG): ISC_STATUS;
00583 function isc_free(isc_arg1: PChar): ISC_LONG;
00584 function isc_sqlcode(status_vector: PISC_STATUS): ISC_LONG;
00585 procedure isc_sql_interprete(sqlcode: Short; buffer: PChar;
00586 buffer_length: Short);
00587 function isc_interprete(buffer: PChar; status_vector: PPISC_STATUS): ISC_STATUS;
00588 function isc_start_transaction(status_vector: PISC_STATUS;
00589 tran_handle: PISC_TR_HANDLE; db_handle_count: Short;
00590 db_handle: PISC_DB_HANDLE; tpb_length: Word; tpb_address: PChar): ISC_STATUS;
00591 function isc_start_multiple(status_vector: PISC_STATUS;
00592 tran_handle: PISC_TR_HANDLE; db_handle_count: Short;
00593 teb_vector_address: PISC_TEB): ISC_STATUS;
00594 function isc_rollback_transaction(status_vector: PISC_STATUS;
00595 tran_handle: PISC_TR_HANDLE): ISC_STATUS;
00596 function isc_rollback_retaining(status_vector: PISC_STATUS;
00597 tran_handle: PISC_TR_HANDLE): ISC_STATUS;
00598 function isc_commit_retaining(status_vector: PISC_STATUS;
00599 tran_handle: PISC_TR_HANDLE): ISC_STATUS;
00600 function isc_commit_transaction(status_vector: PISC_STATUS;
00601 tran_handle: PISC_TR_HANDLE): ISC_STATUS;
00602 function isc_dsql_allocate_statement(status_vector: PISC_STATUS;
00603 db_handle: PISC_DB_HANDLE; stmt_handle: PISC_STMT_HANDLE): ISC_STATUS;
00604 function isc_dsql_alloc_statement2(status_vector: PISC_STATUS;
00605 db_handle: PISC_DB_HANDLE; stmt_handle: PISC_STMT_HANDLE): ISC_STATUS;
00606 function isc_dsql_describe(status_vector: PISC_STATUS;
00607 stmt_handle: PISC_STMT_HANDLE; dialect: Word; xsqlda: PXSQLDA): ISC_STATUS;
00608 function isc_dsql_describe_bind(status_vector: PISC_STATUS;
00609 stmt_handle: PISC_STMT_HANDLE; dialect: Word; xsqlda: PXSQLDA): ISC_STATUS;
00610 function isc_dsql_execute(status_vector: PISC_STATUS;
00611 tran_handle: PISC_TR_HANDLE; stmt_handle: PISC_STMT_HANDLE; dialect: Word;
00612 xsqlda: PXSQLDA): ISC_STATUS;
00613 function isc_dsql_execute2(status_vector: PISC_STATUS;
00614 tran_handle: PISC_TR_HANDLE; stmt_handle: PISC_STMT_HANDLE; dialect: Word;
00615 in_xsqlda, out_xsqlda: PXSQLDA): ISC_STATUS;
00616 function isc_dsql_execute_immediate(status_vector: PISC_STATUS;
00617 db_handle: PISC_DB_HANDLE; tran_handle: PISC_TR_HANDLE; length: Word;
00618 statement: PChar; dialect: Word; xsqlda: PXSQLDA): ISC_STATUS;
00619 function isc_dsql_fetch(status_vector: PISC_STATUS;
00620 stmt_handle: PISC_STMT_HANDLE; dialect: Word; xsqlda: PXSQLDA): ISC_STATUS;
00621 function isc_dsql_free_statement(status_vector: PISC_STATUS;
00622 stmt_handle: PISC_STMT_HANDLE; options: Word): ISC_STATUS;
00623 function isc_dsql_prepare(status_vector: PISC_STATUS;
00624 tran_handle: PISC_TR_HANDLE; stmt_handle: PISC_STMT_HANDLE;
00625 length: Word; statement: PChar; dialect: Word; xsqlda: PXSQLDA): ISC_STATUS;
00626 function isc_dsql_set_cursor_name(status_vector: PISC_STATUS;
00627 stmt_handle: PISC_STMT_HANDLE; cursor_name: PChar; _type: Word): ISC_STATUS;
00628 function isc_dsql_sql_info(status_vector: PISC_STATUS;
00629 stmt_handle: PISC_STMT_HANDLE; item_length: Short; items: PChar;
00630 buffer_length: Short; buffer: PChar): ISC_STATUS;
00631 function isc_open_blob2(status_vector: PISC_STATUS;
00632 db_handle: PISC_DB_HANDLE; tran_handle: PISC_TR_HANDLE;
00633 blob_handle: PISC_BLOB_HANDLE; blob_id: PISC_QUAD; bpb_length: Short;
00634 bpb_buffer: PChar): ISC_STATUS;
00635 function isc_create_blob2(status_vector: PISC_STATUS;
00636 db_handle: PISC_DB_HANDLE; tran_handle: PISC_TR_HANDLE;
00637 blob_handle: PISC_BLOB_HANDLE; blob_id: PISC_QUAD; bpb_length: Short;
00638 bpb_address: PChar): ISC_STATUS;
00639 function isc_blob_info(status_vector: PISC_STATUS;
00640 blob_handle: PISC_BLOB_HANDLE; item_list_buffer_length: Short;
00641 item_list_buffer: PChar; result_buffer_length: Short; result_buffer: PChar): PISC_STATUS;
00642 function isc_close_blob(status_vector: PISC_STATUS;
00643 blob_handle: PISC_BLOB_HANDLE): ISC_STATUS;
00644 function isc_cancel_blob(status_vector: PISC_STATUS;
00645 blob_handle: PISC_BLOB_HANDLE): ISC_STATUS;
00646 function isc_get_segment(status_vector: PISC_STATUS;
00647 blob_handle: PISC_BLOB_HANDLE; actual_seg_length: PWord;
00648 seg_buffer_length: Word; seg_buffer: PChar): ISC_STATUS;
00649 function isc_put_segment(status_vector: PISC_STATUS;
00650 blob_handle: PISC_BLOB_HANDLE; seg_buffer_len: Word; seg_buffer: PChar): ISC_STATUS;
00651 function isc_event_block(event_buffer: PPChar; result_buffer: PPChar;
00652 id_count: Word; event_list: array of PChar): ISC_LONG;
00653 procedure isc_event_counts(status_vector: PISC_STATUS;
00654 buffer_length: Short; event_buffer: PChar; result_buffer: PChar);
00655 function isc_cancel_events(status_vector: PISC_STATUS;
00656 db_handle: PISC_DB_HANDLE; event_id: PISC_LONG): ISC_STATUS;
00657 function isc_que_events(status_vector: PISC_STATUS;
00658 db_handle: PISC_DB_HANDLE; event_id: PISC_LONG; length: Short;
00659 event_buffer: PChar; event_function: TISC_CALLBACK;
00660 event_function_arg: PVoid): ISC_STATUS;
00661 procedure isc_decode_date(ib_date: PISC_QUAD; tm_date: PCTimeStructure);
00662 procedure isc_encode_date(tm_date: PCTimeStructure; ib_date: PISC_QUAD);
00663 { Interbase Version 6 routines }
00664 procedure isc_decode_sql_date(ib_date: PISC_DATE; tm_date: PCTimeStructure);
00665 procedure isc_decode_sql_time(ib_time: PISC_TIME; tm_date: PCTimeStructure);
00666 procedure isc_decode_timestamp(ib_timestamp: PISC_TIMESTAMP;
00667 tm_date: PCTimeStructure);
00668 procedure isc_encode_sql_date(tm_date: PCTimeStructure;
00669 ib_date: PISC_DATE);
00670 procedure isc_encode_sql_time(tm_date: PCTimeStructure;
00671 ib_time: PISC_TIME);
00672 procedure isc_encode_timestamp(tm_date: PCTimeStructure;
00673 ib_timestamp: PISC_TIMESTAMP);
00674 function isc_vax_integer(buffer: PChar; length: Short): ISC_LONG;
00675 end;
00676
00677 TZFirebirdD21PlainDriver = class (TZFirebird21PlainDriver)
00678 public
00679 function GetProtocol: string; override;
00680 function GetDescription: string; override;
00681 procedure Initialize; override;
00682 end;
00683
00684 implementation
00685
00686 uses SysUtils, ZPlainFirebird10, ZPlainFirebird15, ZPlainFirebird20, ZPlainFirebird21;
00687
00688 { IZFirebirdPlainDriver }
00689
00690 constructor TZFirebird10PlainDriver.Create;
00691 begin
00692
00693 end;
00694
00695 function TZFirebird10PlainDriver.GetDescription: string;
00696 begin
00697 Result := 'Native Plain Driver for Firebird';
00698 end;
00699
00700 function TZFirebird10PlainDriver.GetProtocol: string;
00701 begin
00702 Result := 'firebird-1.0';
00703 end;
00704
00705 procedure TZFirebird10PlainDriver.Initialize;
00706 begin
00707 ZPlainFirebird10.LibraryLoader.LoadIfNeeded;
00708 end;
00709
00710 function TZFirebird10PlainDriver.isc_array_gen_sdl(status_vector: PISC_STATUS;
00711 isc_array_desc: PISC_ARRAY_DESC; isc_arg3: PShort;
00712 isc_arg4: PChar; isc_arg5: PShort): ISC_STATUS;
00713 begin
00714 Result := ZPlainFirebird10.isc_array_gen_sdl(status_vector, isc_array_desc,
00715 isc_arg3, isc_arg4, isc_arg5);
00716 end;
00717
00718 function TZFirebird10PlainDriver.isc_array_get_slice(status_vector: PISC_STATUS;
00719 db_handle: PISC_DB_HANDLE; trans_handle: PISC_TR_HANDLE; array_id: PISC_QUAD;
00720 descriptor: PISC_ARRAY_DESC; dest_array: PVoid;
00721 slice_length: ISC_LONG): ISC_STATUS;
00722 begin
00723 Result := ZPlainFirebird10.isc_array_get_slice(status_vector, db_handle,
00724 trans_handle, array_id, descriptor, dest_array, slice_length);
00725 end;
00726
00727 function TZFirebird10PlainDriver.isc_array_lookup_bounds(
00728 status_vector: PISC_STATUS; db_handle: PISC_DB_HANDLE;
00729 trans_handle: PISC_TR_HANDLE; table_name, column_name: PChar;
00730 descriptor: PISC_ARRAY_DESC): ISC_STATUS;
00731 begin
00732 Result := ZPlainFirebird10.isc_array_lookup_bounds(status_vector, db_handle,
00733 trans_handle, table_name, column_name, descriptor);
00734 end;
00735
00736 function TZFirebird10PlainDriver.isc_array_lookup_desc(
00737 status_vector: PISC_STATUS; db_handle: PISC_DB_HANDLE;
00738 trans_handle: PISC_TR_HANDLE; table_name, column_name: PChar;
00739 descriptor: PISC_ARRAY_DESC): ISC_STATUS;
00740 begin
00741 Result := ZPlainFirebird10.isc_array_lookup_desc(status_vector, db_handle,
00742 trans_handle, table_name, column_name, descriptor);
00743 end;
00744
00745 function TZFirebird10PlainDriver.isc_array_put_slice(status_vector: PISC_STATUS;
00746 db_handle: PISC_DB_HANDLE; trans_handle: PISC_TR_HANDLE; array_id: PISC_QUAD;
00747 descriptor: PISC_ARRAY_DESC; source_array: PVoid;
00748 slice_length: PISC_LONG): ISC_STATUS;
00749 begin
00750 Result := ZPlainFirebird10.isc_array_put_slice(status_vector, db_handle,
00751 trans_handle, array_id, descriptor, source_array, slice_length);
00752 end;
00753
00754 function TZFirebird10PlainDriver.isc_array_set_desc(status_vector: PISC_STATUS;
00755 table_name, column_name: PChar; sql_dtype, sql_length, sql_dimensions: PShort;
00756 descriptor: PISC_ARRAY_DESC): ISC_STATUS;
00757 begin
00758 Result := ZPlainFirebird10.isc_array_set_desc(status_vector, table_name,
00759 column_name, sql_dtype, sql_length, sql_dimensions, descriptor);
00760 end;
00761
00762 function TZFirebird10PlainDriver.isc_attach_database(status_vector: PISC_STATUS;
00763 db_name_length: Short; db_name: PChar; db_handle: PISC_DB_HANDLE;
00764 parm_buffer_length: Short; parm_buffer: PChar): ISC_STATUS;
00765 begin
00766 Result := ZPlainFirebird10.isc_attach_database(status_vector, db_name_length,
00767 db_name, db_handle, parm_buffer_length, parm_buffer);
00768 end;
00769
00770 function TZFirebird10PlainDriver.isc_blob_info(status_vector: PISC_STATUS;
00771 blob_handle: PISC_BLOB_HANDLE; item_list_buffer_length: Short;
00772 item_list_buffer: PChar; result_buffer_length: Short;
00773 result_buffer: PChar): PISC_STATUS;
00774 begin
00775 Result := PISC_STATUS(ZPlainFirebird10.isc_blob_info(status_vector, blob_handle,
00776 item_list_buffer_length, item_list_buffer, result_buffer_length,
00777 result_buffer));
00778 end;
00779
00780 function TZFirebird10PlainDriver.isc_cancel_blob(status_vector: PISC_STATUS;
00781 blob_handle: PISC_BLOB_HANDLE): ISC_STATUS;
00782 begin
00783 Result := ZPlainFirebird10.isc_cancel_blob(status_vector, blob_handle);
00784 end;
00785
00786 function TZFirebird10PlainDriver.isc_cancel_events(status_vector: PISC_STATUS;
00787 db_handle: PISC_DB_HANDLE; event_id: PISC_LONG): ISC_STATUS;
00788 begin
00789 Result := ZPlainFirebird10.isc_cancel_events(status_vector, db_handle,
00790 event_id);
00791 end;
00792
00793 function TZFirebird10PlainDriver.isc_close_blob(status_vector: PISC_STATUS;
00794 blob_handle: PISC_BLOB_HANDLE): ISC_STATUS;
00795 begin
00796 Result := ZPlainFirebird10.isc_close_blob(status_vector, blob_handle);
00797 end;
00798
00799 function TZFirebird10PlainDriver.isc_commit_retaining(
00800 status_vector: PISC_STATUS; tran_handle: PISC_TR_HANDLE): ISC_STATUS;
00801 begin
00802 Result := ZPlainFirebird10.isc_commit_retaining(status_vector, tran_handle);
00803 end;
00804
00805 function TZFirebird10PlainDriver.isc_commit_transaction(
00806 status_vector: PISC_STATUS; tran_handle: PISC_TR_HANDLE): ISC_STATUS;
00807 begin
00808 Result := ZPlainFirebird10.isc_commit_transaction(status_vector, tran_handle);
00809 end;
00810
00811 function TZFirebird10PlainDriver.isc_create_blob2(status_vector: PISC_STATUS;
00812 db_handle: PISC_DB_HANDLE; tran_handle: PISC_TR_HANDLE;
00813 blob_handle: PISC_BLOB_HANDLE; blob_id: PISC_QUAD; bpb_length: Short;
00814 bpb_address: PChar): ISC_STATUS;
00815 begin
00816 Result := ZPlainFirebird10.isc_create_blob2(status_vector, db_handle,
00817 tran_handle, blob_handle, blob_id, bpb_length, bpb_address);
00818 end;
00819
00820 function TZFirebird10PlainDriver.isc_database_info(status_vector: PISC_STATUS;
00821 db_handle: PISC_DB_HANDLE; item_list_buffer_length: Short;
00822 item_list_buffer: PChar; result_buffer_length: Short;
00823 result_buffer: PChar): ISC_STATUS;
00824 begin
00825 Result := ZPlainFirebird10.isc_database_info(status_vector, db_handle,
00826 item_list_buffer_length, item_list_buffer, result_buffer_length,
00827 result_buffer);
00828 end;
00829
00830 function TZFirebird10PlainDriver.isc_transaction_info(status_vector: PISC_STATUS;
00831 tr_handle: PISC_TR_HANDLE; item_list_buffer_length: Short;
00832 item_list_buffer: PChar; result_buffer_length: Short;
00833 result_buffer: PChar): ISC_STATUS;
00834 begin
00835 Result := ZPlainFirebird10.isc_transaction_info(status_vector, tr_handle,
00836 item_list_buffer_length, item_list_buffer, result_buffer_length,
00837 result_buffer);
00838 end;
00839
00840 procedure TZFirebird10PlainDriver.isc_decode_date(ib_date: PISC_QUAD;
00841 tm_date: PCTimeStructure);
00842 begin
00843 ZPlainFirebird10.isc_decode_date(ib_date, tm_date);
00844 end;
00845
00846 procedure TZFirebird10PlainDriver.isc_decode_sql_date(ib_date: PISC_DATE;
00847 tm_date: PCTimeStructure);
00848 begin
00849 ZPlainFirebird10.isc_decode_sql_date(ib_date, tm_date);
00850 end;
00851
00852 procedure TZFirebird10PlainDriver.isc_decode_sql_time(ib_time: PISC_TIME;
00853 tm_date: PCTimeStructure);
00854 begin
00855 ZPlainFirebird10.isc_decode_sql_time(ib_time, tm_date);
00856 end;
00857
00858 procedure TZFirebird10PlainDriver.isc_decode_timestamp(
00859 ib_timestamp: PISC_TIMESTAMP; tm_date: PCTimeStructure);
00860 begin
00861 ZPlainFirebird10.isc_decode_timestamp(ib_timestamp, tm_date);
00862 end;
00863
00864 function TZFirebird10PlainDriver.isc_detach_database(status_vector: PISC_STATUS;
00865 db_handle: PISC_DB_HANDLE): ISC_STATUS;
00866 begin
00867 Result := ZPlainFirebird10.isc_detach_database(status_vector, db_handle);
00868 end;
00869
00870 function TZFirebird10PlainDriver.isc_drop_database(status_vector: PISC_STATUS;
00871 db_handle: PISC_DB_HANDLE): ISC_STATUS;
00872 begin
00873 Result := ZPlainFirebird10.isc_drop_database(status_vector, db_handle);
00874 end;
00875
00876 function TZFirebird10PlainDriver.isc_dsql_alloc_statement2(
00877 status_vector: PISC_STATUS; db_handle: PISC_DB_HANDLE;
00878 stmt_handle: PISC_STMT_HANDLE): ISC_STATUS;
00879 begin
00880 Result := ZPlainFirebird10.isc_dsql_alloc_statement2(status_vector,
00881 db_handle, stmt_handle);
00882 end;
00883
00884 function TZFirebird10PlainDriver.isc_dsql_allocate_statement(
00885 status_vector: PISC_STATUS; db_handle: PISC_DB_HANDLE;
00886 stmt_handle: PISC_STMT_HANDLE): ISC_STATUS;
00887 begin
00888 Result := ZPlainFirebird10.isc_dsql_allocate_statement(status_vector,
00889 db_handle, stmt_handle);
00890 end;
00891
00892 function TZFirebird10PlainDriver.isc_dsql_describe(status_vector: PISC_STATUS;
00893 stmt_handle: PISC_STMT_HANDLE; dialect: Word; xsqlda: PXSQLDA): ISC_STATUS;
00894 begin
00895 Result := ZPlainFirebird10.isc_dsql_describe(status_vector, stmt_handle,
00896 dialect, xsqlda);
00897 end;
00898
00899 function TZFirebird10PlainDriver.isc_dsql_describe_bind(
00900 status_vector: PISC_STATUS; stmt_handle: PISC_STMT_HANDLE; dialect: Word;
00901 xsqlda: PXSQLDA): ISC_STATUS;
00902 begin
00903 Result := ZPlainFirebird10.isc_dsql_describe_bind(status_vector, stmt_handle,
00904 dialect, xsqlda);
00905 end;
00906
00907 function TZFirebird10PlainDriver.isc_dsql_execute(status_vector: PISC_STATUS;
00908 tran_handle: PISC_TR_HANDLE; stmt_handle: PISC_STMT_HANDLE; dialect: Word;
00909 xsqlda: PXSQLDA): ISC_STATUS;
00910 begin
00911 Result := ZPlainFirebird10.isc_dsql_execute(status_vector, tran_handle,
00912 stmt_handle, dialect, xsqlda);
00913 end;
00914
00915 function TZFirebird10PlainDriver.isc_dsql_execute_immediate(
00916 status_vector: PISC_STATUS; db_handle: PISC_DB_HANDLE;
00917 tran_handle: PISC_TR_HANDLE; length: Word; statement: PChar;
00918 dialect: Word; xsqlda: PXSQLDA): ISC_STATUS;
00919 begin
00920 Result := ZPlainFirebird10.isc_dsql_execute_immediate(status_vector,
00921 db_handle, tran_handle, length, statement, dialect, xsqlda);
00922 end;
00923
00924 function TZFirebird10PlainDriver.isc_dsql_execute2(status_vector: PISC_STATUS;
00925 tran_handle: PISC_TR_HANDLE; stmt_handle: PISC_STMT_HANDLE;
00926 dialect: Word; in_xsqlda, out_xsqlda: PXSQLDA): ISC_STATUS;
00927 begin
00928 Result := ZPlainFirebird10.isc_dsql_execute2(status_vector, tran_handle,
00929 stmt_handle, dialect, in_xsqlda, out_xsqlda);
00930 end;
00931
00932 function TZFirebird10PlainDriver.isc_dsql_fetch(status_vector: PISC_STATUS;
00933 stmt_handle: PISC_STMT_HANDLE; dialect: Word;
00934 xsqlda: PXSQLDA): ISC_STATUS;
00935 begin
00936 Result := ZPlainFirebird10.isc_dsql_fetch(status_vector, stmt_handle, dialect,
00937 xsqlda);
00938 end;
00939
00940 function TZFirebird10PlainDriver.isc_dsql_free_statement(
00941 status_vector: PISC_STATUS; stmt_handle: PISC_STMT_HANDLE;
00942 options: Word): ISC_STATUS;
00943 begin
00944 Result := ZPlainFirebird10.isc_dsql_free_statement(status_vector, stmt_handle,
00945 options);
00946 end;
00947
00948 function TZFirebird10PlainDriver.isc_dsql_prepare(
00949 status_vector: PISC_STATUS; tran_handle: PISC_TR_HANDLE;
00950 stmt_handle: PISC_STMT_HANDLE; length: Word; statement: PChar;
00951 dialect: Word; xsqlda: PXSQLDA): ISC_STATUS;
00952 begin
00953 Result := ZPlainFirebird10.isc_dsql_prepare(status_vector, tran_handle,
00954 stmt_handle, length, statement, dialect, xsqlda);
00955 end;
00956
00957 function TZFirebird10PlainDriver.isc_dsql_set_cursor_name(
00958 status_vector: PISC_STATUS; stmt_handle: PISC_STMT_HANDLE;
00959 cursor_name: PChar; _type: Word): ISC_STATUS;
00960 begin
00961 Result := ZPlainFirebird10.isc_dsql_set_cursor_name(status_vector,
00962 stmt_handle, cursor_name, _type);
00963 end;
00964
00965 function TZFirebird10PlainDriver.isc_dsql_sql_info(
00966 status_vector: PISC_STATUS; stmt_handle: PISC_STMT_HANDLE;
00967 item_length: Short; items: PChar; buffer_length: Short;
00968 buffer: PChar): ISC_STATUS;
00969 begin
00970 Result := ZPlainFirebird10.isc_dsql_sql_info(status_vector, stmt_handle,
00971 item_length, items, buffer_length, buffer);
00972 end;
00973
00974 procedure TZFirebird10PlainDriver.isc_encode_date(tm_date: PCTimeStructure;
00975 ib_date: PISC_QUAD);
00976 begin
00977 ZPlainFirebird10.isc_encode_date(tm_date, ib_date);
00978 end;
00979
00980 procedure TZFirebird10PlainDriver.isc_encode_sql_date(
00981 tm_date: PCTimeStructure; ib_date: PISC_DATE);
00982 begin
00983 ZPlainFirebird10.isc_encode_sql_date(tm_date, ib_date);
00984 end;
00985
00986 procedure TZFirebird10PlainDriver.isc_encode_sql_time(
00987 tm_date: PCTimeStructure; ib_time: PISC_TIME);
00988 begin
00989 ZPlainFirebird10.isc_encode_sql_time(tm_date, ib_time);
00990 end;
00991
00992 procedure TZFirebird10PlainDriver.isc_encode_timestamp(
00993 tm_date: PCTimeStructure; ib_timestamp: PISC_TIMESTAMP);
00994 begin
00995 ZPlainFirebird10.isc_encode_timestamp(tm_date, ib_timestamp);
00996 end;
00997
00998 function TZFirebird10PlainDriver.isc_event_block(event_buffer,
00999 result_buffer: PPChar; id_count: Word;
01000 event_list: array of PChar): ISC_LONG;
01001 begin
01002 Result := ZPlainFirebird10.isc_event_block(event_buffer, result_buffer,
01003 id_count, event_list);
01004 end;
01005
01006 procedure TZFirebird10PlainDriver.isc_event_counts(
01007 status_vector: PISC_STATUS; buffer_length: Short; event_buffer,
01008 result_buffer: PChar);
01009 begin
01010 ZPlainFirebird10.isc_event_counts(status_vector, buffer_length,
01011 event_buffer, result_buffer);
01012 end;
01013
01014 function TZFirebird10PlainDriver.isc_free(isc_arg1: PChar): ISC_LONG;
01015 begin
01016 Result := ZPlainFirebird10.isc_free(isc_arg1);
01017 end;
01018
01019 function TZFirebird10PlainDriver.isc_get_segment(
01020 status_vector: PISC_STATUS; blob_handle: PISC_BLOB_HANDLE;
01021 actual_seg_length: PWord; seg_buffer_length: Word;
01022 seg_buffer: PChar): ISC_STATUS;
01023 begin
01024 Result := ZPlainFirebird10.isc_get_segment(status_vector, blob_handle,
01025 actual_seg_length, seg_buffer_length, seg_buffer);
01026 end;
01027
01028 function TZFirebird10PlainDriver.isc_interprete(buffer: PChar;
01029 status_vector: PPISC_STATUS): ISC_STATUS;
01030 begin
01031 Result := ZPlainFirebird10.isc_interprete(buffer, status_vector);
01032 end;
01033
01034 function TZFirebird10PlainDriver.isc_open_blob2(status_vector: PISC_STATUS;
01035 db_handle: PISC_DB_HANDLE; tran_handle: PISC_TR_HANDLE;
01036 blob_handle: PISC_BLOB_HANDLE; blob_id: PISC_QUAD; bpb_length: Short;
01037 bpb_buffer: PChar): ISC_STATUS;
01038 begin
01039 Result := ZPlainFirebird10.isc_open_blob2(status_vector, db_handle,
01040 tran_handle, blob_handle, blob_id, bpb_length, bpb_buffer);
01041 end;
01042
01043 function TZFirebird10PlainDriver.isc_put_segment(
01044 status_vector: PISC_STATUS; blob_handle: PISC_BLOB_HANDLE;
01045 seg_buffer_len: Word; seg_buffer: PChar): ISC_STATUS;
01046 begin
01047 Result := ZPlainFirebird10.isc_put_segment(status_vector, blob_handle,
01048 seg_buffer_len, seg_buffer);
01049 end;
01050
01051 function TZFirebird10PlainDriver.isc_que_events(status_vector: PISC_STATUS;
01052 db_handle: PISC_DB_HANDLE; event_id: PISC_LONG; length: Short;
01053 event_buffer: PChar; event_function: TISC_CALLBACK;
01054 event_function_arg: PVoid): ISC_STATUS;
01055 begin
01056 Result := ZPlainFirebird10.isc_que_events(status_vector, db_handle,
01057 event_id, length, event_buffer, event_function, event_function_arg)
01058 end;
01059
01060 function TZFirebird10PlainDriver.isc_rollback_retaining(
01061 status_vector: PISC_STATUS; tran_handle: PISC_TR_HANDLE): ISC_STATUS;
01062 begin
01063 Result := ZPlainFirebird10.isc_rollback_retaining(status_vector, tran_handle);
01064 end;
01065
01066 procedure TZFirebird10PlainDriver.isc_sql_interprete(sqlcode: Short;
01067 buffer: PChar; buffer_length: Short);
01068 begin
01069 ZPlainFirebird10.isc_sql_interprete(sqlcode, buffer, buffer_length);
01070 end;
01071
01072 function TZFirebird10PlainDriver.isc_sqlcode(
01073 status_vector: PISC_STATUS): ISC_LONG;
01074 begin
01075 Result := ZPlainFirebird10.isc_sqlcode(status_vector);
01076 end;
01077
01078 function TZFirebird10PlainDriver.isc_rollback_transaction(
01079 status_vector: PISC_STATUS; tran_handle: PISC_TR_HANDLE): ISC_STATUS;
01080 begin
01081 Result := ZPlainFirebird10.isc_rollback_transaction(status_vector, tran_handle);
01082 end;
01083
01084 function TZFirebird10PlainDriver.isc_start_multiple(
01085 status_vector: PISC_STATUS; tran_handle: PISC_TR_HANDLE;
01086 db_handle_count: Short; teb_vector_address: PISC_TEB): ISC_STATUS;
01087 begin
01088 Result := ZPlainFirebird10.isc_start_multiple(status_vector, tran_handle,
01089 db_handle_count, teb_vector_address);
01090 end;
01091
01092 function TZFirebird10PlainDriver.isc_start_transaction(
01093 status_vector: PISC_STATUS; tran_handle: PISC_TR_HANDLE;
01094 db_handle_count: Short; db_handle: PISC_DB_HANDLE; tpb_length: Word;
01095 tpb_address: PChar): ISC_STATUS;
01096 begin
01097 Result := ZPlainFirebird10.isc_start_transaction(status_vector, tran_handle,
01098 db_handle_count, db_handle, tpb_length, tpb_address);
01099 end;
01100
01101 function TZFirebird10PlainDriver.isc_vax_integer(buffer: PChar;
01102 length: Short): ISC_LONG;
01103 begin
01104 Result := ZPlainFirebird10.isc_vax_integer(buffer, length);
01105 end;
01106
01107
01108 { IZFirebird15PlainDriver }
01109
01110 constructor TZFirebird15PlainDriver.Create;
01111 begin
01112
01113 end;
01114
01115 function TZFirebird15PlainDriver.GetDescription: string;
01116 begin
01117 Result := 'Native Plain Driver for Firebird 1.5';
01118 end;
01119
01120 function TZFirebird15PlainDriver.GetProtocol: string;
01121 begin
01122 Result := 'firebird-1.5';
01123 end;
01124
01125 procedure TZFirebird15PlainDriver.Initialize;
01126 begin
01127 ZPlainFirebird15.LibraryLoader.LoadIfNeeded;
01128 end;
01129
01130 function TZFirebird15PlainDriver.isc_array_gen_sdl(status_vector: PISC_STATUS;
01131 isc_array_desc: PISC_ARRAY_DESC; isc_arg3: PShort;
01132 isc_arg4: PChar; isc_arg5: PShort): ISC_STATUS;
01133 begin
01134 Result := ZPlainFirebird15.isc_array_gen_sdl(status_vector, isc_array_desc,
01135 isc_arg3, isc_arg4, isc_arg5);
01136 end;
01137
01138 function TZFirebird15PlainDriver.isc_array_get_slice(status_vector: PISC_STATUS;
01139 db_handle: PISC_DB_HANDLE; trans_handle: PISC_TR_HANDLE; array_id: PISC_QUAD;
01140 descriptor: PISC_ARRAY_DESC; dest_array: PVoid;
01141 slice_length: ISC_LONG): ISC_STATUS;
01142 begin
01143 Result := ZPlainFirebird15.isc_array_get_slice(status_vector, db_handle,
01144 trans_handle, array_id, descriptor, dest_array, slice_length);
01145 end;
01146
01147 function TZFirebird15PlainDriver.isc_array_lookup_bounds(
01148 status_vector: PISC_STATUS; db_handle: PISC_DB_HANDLE;
01149 trans_handle: PISC_TR_HANDLE; table_name, column_name: PChar;
01150 descriptor: PISC_ARRAY_DESC): ISC_STATUS;
01151 begin
01152 Result := ZPlainFirebird15.isc_array_lookup_bounds(status_vector, db_handle,
01153 trans_handle, table_name, column_name, descriptor);
01154 end;
01155
01156 function TZFirebird15PlainDriver.isc_array_lookup_desc(
01157 status_vector: PISC_STATUS; db_handle: PISC_DB_HANDLE;
01158 trans_handle: PISC_TR_HANDLE; table_name, column_name: PChar;
01159 descriptor: PISC_ARRAY_DESC): ISC_STATUS;
01160 begin
01161 Result := ZPlainFirebird15.isc_array_lookup_desc(status_vector, db_handle,
01162 trans_handle, table_name, column_name, descriptor);
01163 end;
01164
01165 function TZFirebird15PlainDriver.isc_array_put_slice(status_vector: PISC_STATUS;
01166 db_handle: PISC_DB_HANDLE; trans_handle: PISC_TR_HANDLE; array_id: PISC_QUAD;
01167 descriptor: PISC_ARRAY_DESC; source_array: PVoid;
01168 slice_length: PISC_LONG): ISC_STATUS;
01169 begin
01170 Result := ZPlainFirebird15.isc_array_put_slice(status_vector, db_handle,
01171 trans_handle, array_id, descriptor, source_array, slice_length);
01172 end;
01173
01174 function TZFirebird15PlainDriver.isc_array_set_desc(status_vector: PISC_STATUS;
01175 table_name, column_name: PChar; sql_dtype, sql_length, sql_dimensions: PShort;
01176 descriptor: PISC_ARRAY_DESC): ISC_STATUS;
01177 begin
01178 Result := ZPlainFirebird15.isc_array_set_desc(status_vector, table_name,
01179 column_name, sql_dtype, sql_length, sql_dimensions, descriptor);
01180 end;
01181
01182 function TZFirebird15PlainDriver.isc_attach_database(status_vector: PISC_STATUS;
01183 db_name_length: Short; db_name: PChar; db_handle: PISC_DB_HANDLE;
01184 parm_buffer_length: Short; parm_buffer: PChar): ISC_STATUS;
01185 begin
01186 Result := ZPlainFirebird15.isc_attach_database(status_vector, db_name_length,
01187 db_name, db_handle, parm_buffer_length, parm_buffer);
01188 end;
01189
01190 function TZFirebird15PlainDriver.isc_blob_info(status_vector: PISC_STATUS;
01191 blob_handle: PISC_BLOB_HANDLE; item_list_buffer_length: Short;
01192 item_list_buffer: PChar; result_buffer_length: Short;
01193 result_buffer: PChar): PISC_STATUS;
01194 begin
01195 Result := PISC_STATUS(ZPlainFirebird15.isc_blob_info(status_vector, blob_handle,
01196 item_list_buffer_length, item_list_buffer, result_buffer_length,
01197 result_buffer));
01198 end;
01199
01200 function TZFirebird15PlainDriver.isc_cancel_blob(status_vector: PISC_STATUS;
01201 blob_handle: PISC_BLOB_HANDLE): ISC_STATUS;
01202 begin
01203 Result := ZPlainFirebird15.isc_cancel_blob(status_vector, blob_handle);
01204 end;
01205
01206 function TZFirebird15PlainDriver.isc_cancel_events(status_vector: PISC_STATUS;
01207 db_handle: PISC_DB_HANDLE; event_id: PISC_LONG): ISC_STATUS;
01208 begin
01209 Result := ZPlainFirebird15.isc_cancel_events(status_vector, db_handle,
01210 event_id);
01211 end;
01212
01213 function TZFirebird15PlainDriver.isc_close_blob(status_vector: PISC_STATUS;
01214 blob_handle: PISC_BLOB_HANDLE): ISC_STATUS;
01215 begin
01216 Result := ZPlainFirebird15.isc_close_blob(status_vector, blob_handle);
01217 end;
01218
01219 function TZFirebird15PlainDriver.isc_commit_retaining(
01220 status_vector: PISC_STATUS; tran_handle: PISC_TR_HANDLE): ISC_STATUS;
01221 begin
01222 Result := ZPlainFirebird15.isc_commit_retaining(status_vector, tran_handle);
01223 end;
01224
01225 function TZFirebird15PlainDriver.isc_commit_transaction(
01226 status_vector: PISC_STATUS; tran_handle: PISC_TR_HANDLE): ISC_STATUS;
01227 begin
01228 Result := ZPlainFirebird15.isc_commit_transaction(status_vector, tran_handle);
01229 end;
01230
01231 function TZFirebird15PlainDriver.isc_create_blob2(status_vector: PISC_STATUS;
01232 db_handle: PISC_DB_HANDLE; tran_handle: PISC_TR_HANDLE;
01233 blob_handle: PISC_BLOB_HANDLE; blob_id: PISC_QUAD; bpb_length: Short;
01234 bpb_address: PChar): ISC_STATUS;
01235 begin
01236 Result := ZPlainFirebird15.isc_create_blob2(status_vector, db_handle,
01237 tran_handle, blob_handle, blob_id, bpb_length, bpb_address);
01238 end;
01239
01240 function TZFirebird15PlainDriver.isc_database_info(status_vector: PISC_STATUS;
01241 db_handle: PISC_DB_HANDLE; item_list_buffer_length: Short;
01242 item_list_buffer: PChar; result_buffer_length: Short;
01243 result_buffer: PChar): ISC_STATUS;
01244 begin
01245 Result := ZPlainFirebird15.isc_database_info(status_vector, db_handle,
01246 item_list_buffer_length, item_list_buffer, result_buffer_length,
01247 result_buffer);
01248 end;
01249
01250 function TZFirebird15PlainDriver.isc_transaction_info(status_vector: PISC_STATUS;
01251 tr_handle: PISC_TR_HANDLE; item_list_buffer_length: Short;
01252 item_list_buffer: PChar; result_buffer_length: Short;
01253 result_buffer: PChar): ISC_STATUS;
01254 begin
01255 Result := ZPlainFirebird15.isc_transaction_info(status_vector, tr_handle,
01256 item_list_buffer_length, item_list_buffer, result_buffer_length,
01257 result_buffer);
01258 end;
01259
01260 procedure TZFirebird15PlainDriver.isc_decode_date(ib_date: PISC_QUAD;
01261 tm_date: PCTimeStructure);
01262 begin
01263 ZPlainFirebird15.isc_decode_date(ib_date, tm_date);
01264 end;
01265
01266 procedure TZFirebird15PlainDriver.isc_decode_sql_date(ib_date: PISC_DATE;
01267 tm_date: PCTimeStructure);
01268 begin
01269 ZPlainFirebird15.isc_decode_sql_date(ib_date, tm_date);
01270 end;
01271
01272 procedure TZFirebird15PlainDriver.isc_decode_sql_time(ib_time: PISC_TIME;
01273 tm_date: PCTimeStructure);
01274 begin
01275 ZPlainFirebird15.isc_decode_sql_time(ib_time, tm_date);
01276 end;
01277
01278 procedure TZFirebird15PlainDriver.isc_decode_timestamp(
01279 ib_timestamp: PISC_TIMESTAMP; tm_date: PCTimeStructure);
01280 begin
01281 ZPlainFirebird15.isc_decode_timestamp(ib_timestamp, tm_date);
01282 end;
01283
01284 function TZFirebird15PlainDriver.isc_detach_database(status_vector: PISC_STATUS;
01285 db_handle: PISC_DB_HANDLE): ISC_STATUS;
01286 begin
01287 Result := ZPlainFirebird15.isc_detach_database(status_vector, db_handle);
01288 end;
01289
01290 function TZFirebird15PlainDriver.isc_drop_database(status_vector: PISC_STATUS;
01291 db_handle: PISC_DB_HANDLE): ISC_STATUS;
01292 begin
01293 Result := ZPlainFirebird15.isc_drop_database(status_vector, db_handle);
01294 end;
01295
01296 function TZFirebird15PlainDriver.isc_dsql_alloc_statement2(
01297 status_vector: PISC_STATUS; db_handle: PISC_DB_HANDLE;
01298 stmt_handle: PISC_STMT_HANDLE): ISC_STATUS;
01299 begin
01300 Result := ZPlainFirebird15.isc_dsql_alloc_statement2(status_vector,
01301 db_handle, stmt_handle);
01302 end;
01303
01304 function TZFirebird15PlainDriver.isc_dsql_allocate_statement(
01305 status_vector: PISC_STATUS; db_handle: PISC_DB_HANDLE;
01306 stmt_handle: PISC_STMT_HANDLE): ISC_STATUS;
01307 begin
01308 Result := ZPlainFirebird15.isc_dsql_allocate_statement(status_vector,
01309 db_handle, stmt_handle);
01310 end;
01311
01312 function TZFirebird15PlainDriver.isc_dsql_describe(status_vector: PISC_STATUS;
01313 stmt_handle: PISC_STMT_HANDLE; dialect: Word; xsqlda: PXSQLDA): ISC_STATUS;
01314 begin
01315 Result := ZPlainFirebird15.isc_dsql_describe(status_vector, stmt_handle,
01316 dialect, xsqlda);
01317 end;
01318
01319 function TZFirebird15PlainDriver.isc_dsql_describe_bind(
01320 status_vector: PISC_STATUS; stmt_handle: PISC_STMT_HANDLE; dialect: Word;
01321 xsqlda: PXSQLDA): ISC_STATUS;
01322 begin
01323 Result := ZPlainFirebird15.isc_dsql_describe_bind(status_vector, stmt_handle,
01324 dialect, xsqlda);
01325 end;
01326
01327 function TZFirebird15PlainDriver.isc_dsql_execute(status_vector: PISC_STATUS;
01328 tran_handle: PISC_TR_HANDLE; stmt_handle: PISC_STMT_HANDLE; dialect: Word;
01329 xsqlda: PXSQLDA): ISC_STATUS;
01330 begin
01331 Result := ZPlainFirebird15.isc_dsql_execute(status_vector, tran_handle,
01332 stmt_handle, dialect, xsqlda);
01333 end;
01334
01335 function TZFirebird15PlainDriver.isc_dsql_execute_immediate(
01336 status_vector: PISC_STATUS; db_handle: PISC_DB_HANDLE;
01337 tran_handle: PISC_TR_HANDLE; length: Word; statement: PChar;
01338 dialect: Word; xsqlda: PXSQLDA): ISC_STATUS;
01339 begin
01340 Result := ZPlainFirebird15.isc_dsql_execute_immediate(status_vector,
01341 db_handle, tran_handle, length, statement, dialect, xsqlda);
01342 end;
01343
01344 function TZFirebird15PlainDriver.isc_dsql_execute2(status_vector: PISC_STATUS;
01345 tran_handle: PISC_TR_HANDLE; stmt_handle: PISC_STMT_HANDLE;
01346 dialect: Word; in_xsqlda, out_xsqlda: PXSQLDA): ISC_STATUS;
01347 begin
01348 Result := ZPlainFirebird15.isc_dsql_execute2(status_vector, tran_handle,
01349 stmt_handle, dialect, in_xsqlda, out_xsqlda);
01350 end;
01351
01352 function TZFirebird15PlainDriver.isc_dsql_fetch(status_vector: PISC_STATUS;
01353 stmt_handle: PISC_STMT_HANDLE; dialect: Word;
01354 xsqlda: PXSQLDA): ISC_STATUS;
01355 begin
01356 Result := ZPlainFirebird15.isc_dsql_fetch(status_vector, stmt_handle, dialect,
01357 xsqlda);
01358 end;
01359
01360 function TZFirebird15PlainDriver.isc_dsql_free_statement(
01361 status_vector: PISC_STATUS; stmt_handle: PISC_STMT_HANDLE;
01362 options: Word): ISC_STATUS;
01363 begin
01364 Result := ZPlainFirebird15.isc_dsql_free_statement(status_vector, stmt_handle,
01365 options);
01366 end;
01367
01368 function TZFirebird15PlainDriver.isc_dsql_prepare(
01369 status_vector: PISC_STATUS; tran_handle: PISC_TR_HANDLE;
01370 stmt_handle: PISC_STMT_HANDLE; length: Word; statement: PChar;
01371 dialect: Word; xsqlda: PXSQLDA): ISC_STATUS;
01372 begin
01373 Result := ZPlainFirebird15.isc_dsql_prepare(status_vector, tran_handle,
01374 stmt_handle, length, statement, dialect, xsqlda);
01375 end;
01376
01377 function TZFirebird15PlainDriver.isc_dsql_set_cursor_name(
01378 status_vector: PISC_STATUS; stmt_handle: PISC_STMT_HANDLE;
01379 cursor_name: PChar; _type: Word): ISC_STATUS;
01380 begin
01381 Result := ZPlainFirebird15.isc_dsql_set_cursor_name(status_vector,
01382 stmt_handle, cursor_name, _type);
01383 end;
01384
01385 function TZFirebird15PlainDriver.isc_dsql_sql_info(
01386 status_vector: PISC_STATUS; stmt_handle: PISC_STMT_HANDLE;
01387 item_length: Short; items: PChar; buffer_length: Short;
01388 buffer: PChar): ISC_STATUS;
01389 begin
01390 Result := ZPlainFirebird15.isc_dsql_sql_info(status_vector, stmt_handle,
01391 item_length, items, buffer_length, buffer);
01392 end;
01393
01394 procedure TZFirebird15PlainDriver.isc_encode_date(tm_date: PCTimeStructure;
01395 ib_date: PISC_QUAD);
01396 begin
01397 ZPlainFirebird15.isc_encode_date(tm_date, ib_date);
01398 end;
01399
01400 procedure TZFirebird15PlainDriver.isc_encode_sql_date(
01401 tm_date: PCTimeStructure; ib_date: PISC_DATE);
01402 begin
01403 ZPlainFirebird15.isc_encode_sql_date(tm_date, ib_date);
01404 end;
01405
01406 procedure TZFirebird15PlainDriver.isc_encode_sql_time(
01407 tm_date: PCTimeStructure; ib_time: PISC_TIME);
01408 begin
01409 ZPlainFirebird15.isc_encode_sql_time(tm_date, ib_time);
01410 end;
01411
01412 procedure TZFirebird15PlainDriver.isc_encode_timestamp(
01413 tm_date: PCTimeStructure; ib_timestamp: PISC_TIMESTAMP);
01414 begin
01415 ZPlainFirebird15.isc_encode_timestamp(tm_date, ib_timestamp);
01416 end;
01417
01418 function TZFirebird15PlainDriver.isc_event_block(event_buffer,
01419 result_buffer: PPChar; id_count: Word;
01420 event_list: array of PChar): ISC_LONG;
01421 begin
01422 Result := ZPlainFirebird15.isc_event_block(event_buffer, result_buffer,
01423 id_count, event_list);
01424 end;
01425
01426 procedure TZFirebird15PlainDriver.isc_event_counts(
01427 status_vector: PISC_STATUS; buffer_length: Short; event_buffer,
01428 result_buffer: PChar);
01429 begin
01430 ZPlainFirebird15.isc_event_counts(status_vector, buffer_length,
01431 event_buffer, result_buffer);
01432 end;
01433
01434 function TZFirebird15PlainDriver.isc_free(isc_arg1: PChar): ISC_LONG;
01435 begin
01436 Result := ZPlainFirebird15.isc_free(isc_arg1);
01437 end;
01438
01439 function TZFirebird15PlainDriver.isc_get_segment(
01440 status_vector: PISC_STATUS; blob_handle: PISC_BLOB_HANDLE;
01441 actual_seg_length: PWord; seg_buffer_length: Word;
01442 seg_buffer: PChar): ISC_STATUS;
01443 begin
01444 Result := ZPlainFirebird15.isc_get_segment(status_vector, blob_handle,
01445 actual_seg_length, seg_buffer_length, seg_buffer);
01446 end;
01447
01448 function TZFirebird15PlainDriver.isc_interprete(buffer: PChar;
01449 status_vector: PPISC_STATUS): ISC_STATUS;
01450 begin
01451 Result := ZPlainFirebird15.isc_interprete(buffer, status_vector);
01452 end;
01453
01454 function TZFirebird15PlainDriver.isc_open_blob2(status_vector: PISC_STATUS;
01455 db_handle: PISC_DB_HANDLE; tran_handle: PISC_TR_HANDLE;
01456 blob_handle: PISC_BLOB_HANDLE; blob_id: PISC_QUAD; bpb_length: Short;
01457 bpb_buffer: PChar): ISC_STATUS;
01458 begin
01459 Result := ZPlainFirebird15.isc_open_blob2(status_vector, db_handle,
01460 tran_handle, blob_handle, blob_id, bpb_length, bpb_buffer);
01461 end;
01462
01463 function TZFirebird15PlainDriver.isc_put_segment(
01464 status_vector: PISC_STATUS; blob_handle: PISC_BLOB_HANDLE;
01465 seg_buffer_len: Word; seg_buffer: PChar): ISC_STATUS;
01466 begin
01467 Result := ZPlainFirebird15.isc_put_segment(status_vector, blob_handle,
01468 seg_buffer_len, seg_buffer);
01469 end;
01470
01471 function TZFirebird15PlainDriver.isc_que_events(status_vector: PISC_STATUS;
01472 db_handle: PISC_DB_HANDLE; event_id: PISC_LONG; length: Short;
01473 event_buffer: PChar; event_function: TISC_CALLBACK;
01474 event_function_arg: PVoid): ISC_STATUS;
01475 begin
01476 Result := ZPlainFirebird15.isc_que_events(status_vector, db_handle,
01477 event_id, length, event_buffer, event_function, event_function_arg)
01478 end;
01479
01480 function TZFirebird15PlainDriver.isc_rollback_retaining(
01481 status_vector: PISC_STATUS; tran_handle: PISC_TR_HANDLE): ISC_STATUS;
01482 begin
01483 Result := ZPlainFirebird15.isc_rollback_retaining(status_vector, tran_handle);
01484 end;
01485
01486 procedure TZFirebird15PlainDriver.isc_sql_interprete(sqlcode: Short;
01487 buffer: PChar; buffer_length: Short);
01488 begin
01489 ZPlainFirebird15.isc_sql_interprete(sqlcode, buffer, buffer_length);
01490 end;
01491
01492 function TZFirebird15PlainDriver.isc_sqlcode(
01493 status_vector: PISC_STATUS): ISC_LONG;
01494 begin
01495 Result := ZPlainFirebird15.isc_sqlcode(status_vector);
01496 end;
01497
01498 function TZFirebird15PlainDriver.isc_rollback_transaction(
01499 status_vector: PISC_STATUS; tran_handle: PISC_TR_HANDLE): ISC_STATUS;
01500 begin
01501 Result := ZPlainFirebird15.isc_rollback_transaction(status_vector, tran_handle);
01502 end;
01503
01504 function TZFirebird15PlainDriver.isc_start_multiple(
01505 status_vector: PISC_STATUS; tran_handle: PISC_TR_HANDLE;
01506 db_handle_count: Short; teb_vector_address: PISC_TEB): ISC_STATUS;
01507 begin
01508 Result := ZPlainFirebird15.isc_start_multiple(status_vector, tran_handle,
01509 db_handle_count, teb_vector_address);
01510 end;
01511
01512 function TZFirebird15PlainDriver.isc_start_transaction(
01513 status_vector: PISC_STATUS; tran_handle: PISC_TR_HANDLE;
01514 db_handle_count: Short; db_handle: PISC_DB_HANDLE; tpb_length: Word;
01515 tpb_address: PChar): ISC_STATUS;
01516 begin
01517 Result := ZPlainFirebird15.isc_start_transaction(status_vector, tran_handle,
01518 db_handle_count, db_handle, tpb_length, tpb_address);
01519 end;
01520
01521 function TZFirebird15PlainDriver.isc_vax_integer(buffer: PChar;
01522 length: Short): ISC_LONG;
01523 begin
01524 Result := ZPlainFirebird15.isc_vax_integer(buffer, length);
01525 end;
01526
01527
01528 { IZFirebird15PlainDriver }
01529
01530 function TZFirebirdD15PlainDriver.GetProtocol: string;
01531 begin
01532 Result := 'firebirdd-1.5';
01533 end;
01534
01535 function TZFirebirdD15PlainDriver.GetDescription: string;
01536 begin
01537 Result := 'Native Plain Driver for Firebird Embedded 1.5';
01538 end;
01539
01540 procedure TZFirebirdD15PlainDriver.Initialize;
01541 begin
01542 ZPlainFirebird15.LibraryLoaderEmbedded.LoadIfNeeded;
01543
01544 end;
01545
01546
01547 { IZFirebird20PlainDriver }
01548
01549 constructor TZFirebird20PlainDriver.Create;
01550 begin
01551
01552 end;
01553
01554 function TZFirebird20PlainDriver.GetDescription: string;
01555 begin
01556 Result := 'Native Plain Driver for Firebird 2.0';
01557 end;
01558
01559 function TZFirebird20PlainDriver.GetProtocol: string;
01560 begin
01561 Result := 'firebird-2.0';
01562 end;
01563
01564 procedure TZFirebird20PlainDriver.Initialize;
01565 begin
01566 ZPlainFirebird20.LibraryLoader.LoadIfNeeded;
01567 end;
01568
01569 function TZFirebird20PlainDriver.isc_array_gen_sdl(status_vector: PISC_STATUS;
01570 isc_array_desc: PISC_ARRAY_DESC; isc_arg3: PShort;
01571 isc_arg4: PChar; isc_arg5: PShort): ISC_STATUS;
01572 begin
01573 Result := ZPlainFirebird20.isc_array_gen_sdl(status_vector, isc_array_desc,
01574 isc_arg3, isc_arg4, isc_arg5);
01575 end;
01576
01577 function TZFirebird20PlainDriver.isc_array_get_slice(status_vector: PISC_STATUS;
01578 db_handle: PISC_DB_HANDLE; trans_handle: PISC_TR_HANDLE; array_id: PISC_QUAD;
01579 descriptor: PISC_ARRAY_DESC; dest_array: PVoid;
01580 slice_length: ISC_LONG): ISC_STATUS;
01581 begin
01582 Result := ZPlainFirebird20.isc_array_get_slice(status_vector, db_handle,
01583 trans_handle, array_id, descriptor, dest_array, slice_length);
01584 end;
01585
01586 function TZFirebird20PlainDriver.isc_array_lookup_bounds(
01587 status_vector: PISC_STATUS; db_handle: PISC_DB_HANDLE;
01588 trans_handle: PISC_TR_HANDLE; table_name, column_name: PChar;
01589 descriptor: PISC_ARRAY_DESC): ISC_STATUS;
01590 begin
01591 Result := ZPlainFirebird20.isc_array_lookup_bounds(status_vector, db_handle,
01592 trans_handle, table_name, column_name, descriptor);
01593 end;
01594
01595 function TZFirebird20PlainDriver.isc_array_lookup_desc(
01596 status_vector: PISC_STATUS; db_handle: PISC_DB_HANDLE;
01597 trans_handle: PISC_TR_HANDLE; table_name, column_name: PChar;
01598 descriptor: PISC_ARRAY_DESC): ISC_STATUS;
01599 begin
01600 Result := ZPlainFirebird20.isc_array_lookup_desc(status_vector, db_handle,
01601 trans_handle, table_name, column_name, descriptor);
01602 end;
01603
01604 function TZFirebird20PlainDriver.isc_array_put_slice(status_vector: PISC_STATUS;
01605 db_handle: PISC_DB_HANDLE; trans_handle: PISC_TR_HANDLE; array_id: PISC_QUAD;
01606 descriptor: PISC_ARRAY_DESC; source_array: PVoid;
01607 slice_length: PISC_LONG): ISC_STATUS;
01608 begin
01609 Result := ZPlainFirebird20.isc_array_put_slice(status_vector, db_handle,
01610 trans_handle, array_id, descriptor, source_array, slice_length);
01611 end;
01612
01613 function TZFirebird20PlainDriver.isc_array_set_desc(status_vector: PISC_STATUS;
01614 table_name, column_name: PChar; sql_dtype, sql_length, sql_dimensions: PShort;
01615 descriptor: PISC_ARRAY_DESC): ISC_STATUS;
01616 begin
01617 Result := ZPlainFirebird20.isc_array_set_desc(status_vector, table_name,
01618 column_name, sql_dtype, sql_length, sql_dimensions, descriptor);
01619 end;
01620
01621 function TZFirebird20PlainDriver.isc_attach_database(status_vector: PISC_STATUS;
01622 db_name_length: Short; db_name: PChar; db_handle: PISC_DB_HANDLE;
01623 parm_buffer_length: Short; parm_buffer: PChar): ISC_STATUS;
01624 begin
01625 Result := ZPlainFirebird20.isc_attach_database(status_vector, db_name_length,
01626 db_name, db_handle, parm_buffer_length, parm_buffer);
01627 end;
01628
01629 function TZFirebird20PlainDriver.isc_blob_info(status_vector: PISC_STATUS;
01630 blob_handle: PISC_BLOB_HANDLE; item_list_buffer_length: Short;
01631 item_list_buffer: PChar; result_buffer_length: Short;
01632 result_buffer: PChar): PISC_STATUS;
01633 begin
01634 Result := PISC_STATUS(ZPlainFirebird20.isc_blob_info(status_vector, blob_handle,
01635 item_list_buffer_length, item_list_buffer, result_buffer_length,
01636 result_buffer));
01637 end;
01638
01639 function TZFirebird20PlainDriver.isc_cancel_blob(status_vector: PISC_STATUS;
01640 blob_handle: PISC_BLOB_HANDLE): ISC_STATUS;
01641 begin
01642 Result := ZPlainFirebird20.isc_cancel_blob(status_vector, blob_handle);
01643 end;
01644
01645 function TZFirebird20PlainDriver.isc_cancel_events(status_vector: PISC_STATUS;
01646 db_handle: PISC_DB_HANDLE; event_id: PISC_LONG): ISC_STATUS;
01647 begin
01648 Result := ZPlainFirebird20.isc_cancel_events(status_vector, db_handle,
01649 event_id);
01650 end;
01651
01652 function TZFirebird20PlainDriver.isc_close_blob(status_vector: PISC_STATUS;
01653 blob_handle: PISC_BLOB_HANDLE): ISC_STATUS;
01654 begin
01655 Result := ZPlainFirebird20.isc_close_blob(status_vector, blob_handle);
01656 end;
01657
01658 function TZFirebird20PlainDriver.isc_commit_retaining(
01659 status_vector: PISC_STATUS; tran_handle: PISC_TR_HANDLE): ISC_STATUS;
01660 begin
01661 Result := ZPlainFirebird20.isc_commit_retaining(status_vector, tran_handle);
01662 end;
01663
01664 function TZFirebird20PlainDriver.isc_commit_transaction(
01665 status_vector: PISC_STATUS; tran_handle: PISC_TR_HANDLE): ISC_STATUS;
01666 begin
01667 Result := ZPlainFirebird20.isc_commit_transaction(status_vector, tran_handle);
01668 end;
01669
01670 function TZFirebird20PlainDriver.isc_create_blob2(status_vector: PISC_STATUS;
01671 db_handle: PISC_DB_HANDLE; tran_handle: PISC_TR_HANDLE;
01672 blob_handle: PISC_BLOB_HANDLE; blob_id: PISC_QUAD; bpb_length: Short;
01673 bpb_address: PChar): ISC_STATUS;
01674 begin
01675 Result := ZPlainFirebird20.isc_create_blob2(status_vector, db_handle,
01676 tran_handle, blob_handle, blob_id, bpb_length, bpb_address);
01677 end;
01678
01679 function TZFirebird20PlainDriver.isc_database_info(status_vector: PISC_STATUS;
01680 db_handle: PISC_DB_HANDLE; item_list_buffer_length: Short;
01681 item_list_buffer: PChar; result_buffer_length: Short;
01682 result_buffer: PChar): ISC_STATUS;
01683 begin
01684 Result := ZPlainFirebird20.isc_database_info(status_vector, db_handle,
01685 item_list_buffer_length, item_list_buffer, result_buffer_length,
01686 result_buffer);
01687 end;
01688
01689 function TZFirebird20PlainDriver.isc_transaction_info(status_vector: PISC_STATUS;
01690 tr_handle: PISC_TR_HANDLE; item_list_buffer_length: Short;
01691 item_list_buffer: PChar; result_buffer_length: Short;
01692 result_buffer: PChar): ISC_STATUS;
01693 begin
01694 Result := ZPlainFirebird20.isc_transaction_info(status_vector, tr_handle,
01695 item_list_buffer_length, item_list_buffer, result_buffer_length,
01696 result_buffer);
01697 end;
01698
01699 procedure TZFirebird20PlainDriver.isc_decode_date(ib_date: PISC_QUAD;
01700 tm_date: PCTimeStructure);
01701 begin
01702 ZPlainFirebird20.isc_decode_date(ib_date, tm_date);
01703 end;
01704
01705 procedure TZFirebird20PlainDriver.isc_decode_sql_date(ib_date: PISC_DATE;
01706 tm_date: PCTimeStructure);
01707 begin
01708 ZPlainFirebird20.isc_decode_sql_date(ib_date, tm_date);
01709 end;
01710
01711 procedure TZFirebird20PlainDriver.isc_decode_sql_time(ib_time: PISC_TIME;
01712 tm_date: PCTimeStructure);
01713 begin
01714 ZPlainFirebird20.isc_decode_sql_time(ib_time, tm_date);
01715 end;
01716
01717 procedure TZFirebird20PlainDriver.isc_decode_timestamp(
01718 ib_timestamp: PISC_TIMESTAMP; tm_date: PCTimeStructure);
01719 begin
01720 ZPlainFirebird20.isc_decode_timestamp(ib_timestamp, tm_date);
01721 end;
01722
01723 function TZFirebird20PlainDriver.isc_detach_database(status_vector: PISC_STATUS;
01724 db_handle: PISC_DB_HANDLE): ISC_STATUS;
01725 begin
01726 Result := ZPlainFirebird20.isc_detach_database(status_vector, db_handle);
01727 end;
01728
01729 function TZFirebird20PlainDriver.isc_drop_database(status_vector: PISC_STATUS;
01730 db_handle: PISC_DB_HANDLE): ISC_STATUS;
01731 begin
01732 Result := ZPlainFirebird20.isc_drop_database(status_vector, db_handle);
01733 end;
01734
01735 function TZFirebird20PlainDriver.isc_dsql_alloc_statement2(
01736 status_vector: PISC_STATUS; db_handle: PISC_DB_HANDLE;
01737 stmt_handle: PISC_STMT_HANDLE): ISC_STATUS;
01738 begin
01739 Result := ZPlainFirebird20.isc_dsql_alloc_statement2(status_vector,
01740 db_handle, stmt_handle);
01741 end;
01742
01743 function TZFirebird20PlainDriver.isc_dsql_allocate_statement(
01744 status_vector: PISC_STATUS; db_handle: PISC_DB_HANDLE;
01745 stmt_handle: PISC_STMT_HANDLE): ISC_STATUS;
01746 begin
01747 Result := ZPlainFirebird20.isc_dsql_allocate_statement(status_vector,
01748 db_handle, stmt_handle);
01749 end;
01750
01751 function TZFirebird20PlainDriver.isc_dsql_describe(status_vector: PISC_STATUS;
01752 stmt_handle: PISC_STMT_HANDLE; dialect: Word; xsqlda: PXSQLDA): ISC_STATUS;
01753 begin
01754 Result := ZPlainFirebird20.isc_dsql_describe(status_vector, stmt_handle,
01755 dialect, xsqlda);
01756 end;
01757
01758 function TZFirebird20PlainDriver.isc_dsql_describe_bind(
01759 status_vector: PISC_STATUS; stmt_handle: PISC_STMT_HANDLE; dialect: Word;
01760 xsqlda: PXSQLDA): ISC_STATUS;
01761 begin
01762 Result := ZPlainFirebird20.isc_dsql_describe_bind(status_vector, stmt_handle,
01763 dialect, xsqlda);
01764 end;
01765
01766 function TZFirebird20PlainDriver.isc_dsql_execute(status_vector: PISC_STATUS;
01767 tran_handle: PISC_TR_HANDLE; stmt_handle: PISC_STMT_HANDLE; dialect: Word;
01768 xsqlda: PXSQLDA): ISC_STATUS;
01769 begin
01770 Result := ZPlainFirebird20.isc_dsql_execute(status_vector, tran_handle,
01771 stmt_handle, dialect, xsqlda);
01772 end;
01773
01774 function TZFirebird20PlainDriver.isc_dsql_execute_immediate(
01775 status_vector: PISC_STATUS; db_handle: PISC_DB_HANDLE;
01776 tran_handle: PISC_TR_HANDLE; length: Word; statement: PChar;
01777 dialect: Word; xsqlda: PXSQLDA): ISC_STATUS;
01778 begin
01779 Result := ZPlainFirebird20.isc_dsql_execute_immediate(status_vector,
01780 db_handle, tran_handle, length, statement, dialect, xsqlda);
01781 end;
01782
01783 function TZFirebird20PlainDriver.isc_dsql_execute2(status_vector: PISC_STATUS;
01784 tran_handle: PISC_TR_HANDLE; stmt_handle: PISC_STMT_HANDLE;
01785 dialect: Word; in_xsqlda, out_xsqlda: PXSQLDA): ISC_STATUS;
01786 begin
01787 Result := ZPlainFirebird20.isc_dsql_execute2(status_vector, tran_handle,
01788 stmt_handle, dialect, in_xsqlda, out_xsqlda);
01789 end;
01790
01791 function TZFirebird20PlainDriver.isc_dsql_fetch(status_vector: PISC_STATUS;
01792 stmt_handle: PISC_STMT_HANDLE; dialect: Word;
01793 xsqlda: PXSQLDA): ISC_STATUS;
01794 begin
01795 Result := ZPlainFirebird20.isc_dsql_fetch(status_vector, stmt_handle, dialect,
01796 xsqlda);
01797 end;
01798
01799 function TZFirebird20PlainDriver.isc_dsql_free_statement(
01800 status_vector: PISC_STATUS; stmt_handle: PISC_STMT_HANDLE;
01801 options: Word): ISC_STATUS;
01802 begin
01803 Result := ZPlainFirebird20.isc_dsql_free_statement(status_vector, stmt_handle,
01804 options);
01805 end;
01806
01807 function TZFirebird20PlainDriver.isc_dsql_prepare(
01808 status_vector: PISC_STATUS; tran_handle: PISC_TR_HANDLE;
01809 stmt_handle: PISC_STMT_HANDLE; length: Word; statement: PChar;
01810 dialect: Word; xsqlda: PXSQLDA): ISC_STATUS;
01811 begin
01812 Result := ZPlainFirebird20.isc_dsql_prepare(status_vector, tran_handle,
01813 stmt_handle, length, statement, dialect, xsqlda);
01814 end;
01815
01816 function TZFirebird20PlainDriver.isc_dsql_set_cursor_name(
01817 status_vector: PISC_STATUS; stmt_handle: PISC_STMT_HANDLE;
01818 cursor_name: PChar; _type: Word): ISC_STATUS;
01819 begin
01820 Result := ZPlainFirebird20.isc_dsql_set_cursor_name(status_vector,
01821 stmt_handle, cursor_name, _type);
01822 end;
01823
01824 function TZFirebird20PlainDriver.isc_dsql_sql_info(
01825 status_vector: PISC_STATUS; stmt_handle: PISC_STMT_HANDLE;
01826 item_length: Short; items: PChar; buffer_length: Short;
01827 buffer: PChar): ISC_STATUS;
01828 begin
01829 Result := ZPlainFirebird20.isc_dsql_sql_info(status_vector, stmt_handle,
01830 item_length, items, buffer_length, buffer);
01831 end;
01832
01833 procedure TZFirebird20PlainDriver.isc_encode_date(tm_date: PCTimeStructure;
01834 ib_date: PISC_QUAD);
01835 begin
01836 ZPlainFirebird20.isc_encode_date(tm_date, ib_date);
01837 end;
01838
01839 procedure TZFirebird20PlainDriver.isc_encode_sql_date(
01840 tm_date: PCTimeStructure; ib_date: PISC_DATE);
01841 begin
01842 ZPlainFirebird20.isc_encode_sql_date(tm_date, ib_date);
01843 end;
01844
01845 procedure TZFirebird20PlainDriver.isc_encode_sql_time(
01846 tm_date: PCTimeStructure; ib_time: PISC_TIME);
01847 begin
01848 ZPlainFirebird20.isc_encode_sql_time(tm_date, ib_time);
01849 end;
01850
01851 procedure TZFirebird20PlainDriver.isc_encode_timestamp(
01852 tm_date: PCTimeStructure; ib_timestamp: PISC_TIMESTAMP);
01853 begin
01854 ZPlainFirebird20.isc_encode_timestamp(tm_date, ib_timestamp);
01855 end;
01856
01857 function TZFirebird20PlainDriver.isc_event_block(event_buffer,
01858 result_buffer: PPChar; id_count: Word;
01859 event_list: array of PChar): ISC_LONG;
01860 begin
01861 Result := ZPlainFirebird20.isc_event_block(event_buffer, result_buffer,
01862 id_count, event_list);
01863 end;
01864
01865 procedure TZFirebird20PlainDriver.isc_event_counts(
01866 status_vector: PISC_STATUS; buffer_length: Short; event_buffer,
01867 result_buffer: PChar);
01868 begin
01869 ZPlainFirebird20.isc_event_counts(status_vector, buffer_length,
01870 event_buffer, result_buffer);
01871 end;
01872
01873 function TZFirebird20PlainDriver.isc_free(isc_arg1: PChar): ISC_LONG;
01874 begin
01875 Result := ZPlainFirebird20.isc_free(isc_arg1);
01876 end;
01877
01878 function TZFirebird20PlainDriver.isc_get_segment(
01879 status_vector: PISC_STATUS; blob_handle: PISC_BLOB_HANDLE;
01880 actual_seg_length: PWord; seg_buffer_length: Word;
01881 seg_buffer: PChar): ISC_STATUS;
01882 begin
01883 Result := ZPlainFirebird20.isc_get_segment(status_vector, blob_handle,
01884 actual_seg_length, seg_buffer_length, seg_buffer);
01885 end;
01886
01887 function TZFirebird20PlainDriver.isc_interprete(buffer: PChar;
01888 status_vector: PPISC_STATUS): ISC_STATUS;
01889 begin
01890 Result := ZPlainFirebird20.isc_interprete(buffer, status_vector);
01891 end;
01892
01893 function TZFirebird20PlainDriver.isc_open_blob2(status_vector: PISC_STATUS;
01894 db_handle: PISC_DB_HANDLE; tran_handle: PISC_TR_HANDLE;
01895 blob_handle: PISC_BLOB_HANDLE; blob_id: PISC_QUAD; bpb_length: Short;
01896 bpb_buffer: PChar): ISC_STATUS;
01897 begin
01898 Result := ZPlainFirebird20.isc_open_blob2(status_vector, db_handle,
01899 tran_handle, blob_handle, blob_id, bpb_length, bpb_buffer);
01900 end;
01901
01902 function TZFirebird20PlainDriver.isc_put_segment(
01903 status_vector: PISC_STATUS; blob_handle: PISC_BLOB_HANDLE;
01904 seg_buffer_len: Word; seg_buffer: PChar): ISC_STATUS;
01905 begin
01906 Result := ZPlainFirebird20.isc_put_segment(status_vector, blob_handle,
01907 seg_buffer_len, seg_buffer);
01908 end;
01909
01910 function TZFirebird20PlainDriver.isc_que_events(status_vector: PISC_STATUS;
01911 db_handle: PISC_DB_HANDLE; event_id: PISC_LONG; length: Short;
01912 event_buffer: PChar; event_function: TISC_CALLBACK;
01913 event_function_arg: PVoid): ISC_STATUS;
01914 begin
01915 Result := ZPlainFirebird20.isc_que_events(status_vector, db_handle,
01916 event_id, length, event_buffer, event_function, event_function_arg)
01917 end;
01918
01919 function TZFirebird20PlainDriver.isc_rollback_retaining(
01920 status_vector: PISC_STATUS; tran_handle: PISC_TR_HANDLE): ISC_STATUS;
01921 begin
01922 Result := ZPlainFirebird20.isc_rollback_retaining(status_vector, tran_handle);
01923 end;
01924
01925 procedure TZFirebird20PlainDriver.isc_sql_interprete(sqlcode: Short;
01926 buffer: PChar; buffer_length: Short);
01927 begin
01928 ZPlainFirebird20.isc_sql_interprete(sqlcode, buffer, buffer_length);
01929 end;
01930
01931 function TZFirebird20PlainDriver.isc_sqlcode(
01932 status_vector: PISC_STATUS): ISC_LONG;
01933 begin
01934 Result := ZPlainFirebird20.isc_sqlcode(status_vector);
01935 end;
01936
01937 function TZFirebird20PlainDriver.isc_rollback_transaction(
01938 status_vector: PISC_STATUS; tran_handle: PISC_TR_HANDLE): ISC_STATUS;
01939 begin
01940 Result := ZPlainFirebird20.isc_rollback_transaction(status_vector, tran_handle);
01941 end;
01942
01943 function TZFirebird20PlainDriver.isc_start_multiple(
01944 status_vector: PISC_STATUS; tran_handle: PISC_TR_HANDLE;
01945 db_handle_count: Short; teb_vector_address: PISC_TEB): ISC_STATUS;
01946 begin
01947 Result := ZPlainFirebird20.isc_start_multiple(status_vector, tran_handle,
01948 db_handle_count, teb_vector_address);
01949 end;
01950
01951 function TZFirebird20PlainDriver.isc_start_transaction(
01952 status_vector: PISC_STATUS; tran_handle: PISC_TR_HANDLE;
01953 db_handle_count: Short; db_handle: PISC_DB_HANDLE; tpb_length: Word;
01954 tpb_address: PChar): ISC_STATUS;
01955 begin
01956 Result := ZPlainFirebird20.isc_start_transaction(status_vector, tran_handle,
01957 db_handle_count, db_handle, tpb_length, tpb_address);
01958 end;
01959
01960 function TZFirebird20PlainDriver.isc_vax_integer(buffer: PChar;
01961 length: Short): ISC_LONG;
01962 begin
01963 Result := ZPlainFirebird20.isc_vax_integer(buffer, length);
01964 end;
01965
01966
01967 { IZFirebirdD20PlainDriver }
01968
01969 function TZFirebirdD20PlainDriver.GetProtocol: string;
01970 begin
01971 Result := 'firebirdd-2.0';
01972 end;
01973
01974 function TZFirebirdD20PlainDriver.GetDescription: string;
01975 begin
01976 Result := 'Native Plain Driver for Firebird Embedded 2.0';
01977 end;
01978
01979 procedure TZFirebirdD20PlainDriver.Initialize;
01980 begin
01981 ZPlainFirebird20.LibraryLoaderEmbedded.LoadIfNeeded;
01982
01983 end;
01984
01985 { IZFirebird21PlainDriver }
01986
01987 constructor TZFirebird21PlainDriver.Create;
01988 begin
01989
01990 end;
01991
01992 function TZFirebird21PlainDriver.GetDescription: string;
01993 begin
01994 Result := 'Native Plain Driver for Firebird 2.1';
01995 end;
01996
01997 function TZFirebird21PlainDriver.GetProtocol: string;
01998 begin
01999 Result := 'firebird-2.1';
02000 end;
02001
02002 procedure TZFirebird21PlainDriver.Initialize;
02003 begin
02004 ZPlainFirebird21.LibraryLoader.LoadIfNeeded;
02005 end;
02006
02007 function TZFirebird21PlainDriver.isc_array_gen_sdl(status_vector: PISC_STATUS;
02008 isc_array_desc: PISC_ARRAY_DESC; isc_arg3: PShort;
02009 isc_arg4: PChar; isc_arg5: PShort): ISC_STATUS;
02010 begin
02011 Result := ZPlainFirebird21.isc_array_gen_sdl(status_vector, isc_array_desc,
02012 isc_arg3, isc_arg4, isc_arg5);
02013 end;
02014
02015 function TZFirebird21PlainDriver.isc_array_get_slice(status_vector: PISC_STATUS;
02016 db_handle: PISC_DB_HANDLE; trans_handle: PISC_TR_HANDLE; array_id: PISC_QUAD;
02017 descriptor: PISC_ARRAY_DESC; dest_array: PVoid;
02018 slice_length: ISC_LONG): ISC_STATUS;
02019 begin
02020 Result := ZPlainFirebird21.isc_array_get_slice(status_vector, db_handle,
02021 trans_handle, array_id, descriptor, dest_array, slice_length);
02022 end;
02023
02024 function TZFirebird21PlainDriver.isc_array_lookup_bounds(
02025 status_vector: PISC_STATUS; db_handle: PISC_DB_HANDLE;
02026 trans_handle: PISC_TR_HANDLE; table_name, column_name: PChar;
02027 descriptor: PISC_ARRAY_DESC): ISC_STATUS;
02028 begin
02029 Result := ZPlainFirebird21.isc_array_lookup_bounds(status_vector, db_handle,
02030 trans_handle, table_name, column_name, descriptor);
02031 end;
02032
02033 function TZFirebird21PlainDriver.isc_array_lookup_desc(
02034 status_vector: PISC_STATUS; db_handle: PISC_DB_HANDLE;
02035 trans_handle: PISC_TR_HANDLE; table_name, column_name: PChar;
02036 descriptor: PISC_ARRAY_DESC): ISC_STATUS;
02037 begin
02038 Result := ZPlainFirebird21.isc_array_lookup_desc(status_vector, db_handle,
02039 trans_handle, table_name, column_name, descriptor);
02040 end;
02041
02042 function TZFirebird21PlainDriver.isc_array_put_slice(status_vector: PISC_STATUS;
02043 db_handle: PISC_DB_HANDLE; trans_handle: PISC_TR_HANDLE; array_id: PISC_QUAD;
02044 descriptor: PISC_ARRAY_DESC; source_array: PVoid;
02045 slice_length: PISC_LONG): ISC_STATUS;
02046 begin
02047 Result := ZPlainFirebird21.isc_array_put_slice(status_vector, db_handle,
02048 trans_handle, array_id, descriptor, source_array, slice_length);
02049 end;
02050
02051 function TZFirebird21PlainDriver.isc_array_set_desc(status_vector: PISC_STATUS;
02052 table_name, column_name: PChar; sql_dtype, sql_length, sql_dimensions: PShort;
02053 descriptor: PISC_ARRAY_DESC): ISC_STATUS;
02054 begin
02055 Result := ZPlainFirebird21.isc_array_set_desc(status_vector, table_name,
02056 column_name, sql_dtype, sql_length, sql_dimensions, descriptor);
02057 end;
02058
02059 function TZFirebird21PlainDriver.isc_attach_database(status_vector: PISC_STATUS;
02060 db_name_length: Short; db_name: PChar; db_handle: PISC_DB_HANDLE;
02061 parm_buffer_length: Short; parm_buffer: PChar): ISC_STATUS;
02062 begin
02063 Result := ZPlainFirebird21.isc_attach_database(status_vector, db_name_length,
02064 db_name, db_handle, parm_buffer_length, parm_buffer);
02065 end;
02066
02067 function TZFirebird21PlainDriver.isc_blob_info(status_vector: PISC_STATUS;
02068 blob_handle: PISC_BLOB_HANDLE; item_list_buffer_length: Short;
02069 item_list_buffer: PChar; result_buffer_length: Short;
02070 result_buffer: PChar): PISC_STATUS;
02071 begin
02072 Result := PISC_STATUS(ZPlainFirebird21.isc_blob_info(status_vector, blob_handle,
02073 item_list_buffer_length, item_list_buffer, result_buffer_length,
02074 result_buffer));
02075 end;
02076
02077 function TZFirebird21PlainDriver.isc_cancel_blob(status_vector: PISC_STATUS;
02078 blob_handle: PISC_BLOB_HANDLE): ISC_STATUS;
02079 begin
02080 Result := ZPlainFirebird21.isc_cancel_blob(status_vector, blob_handle);
02081 end;
02082
02083 function TZFirebird21PlainDriver.isc_cancel_events(status_vector: PISC_STATUS;
02084 db_handle: PISC_DB_HANDLE; event_id: PISC_LONG): ISC_STATUS;
02085 begin
02086 Result := ZPlainFirebird21.isc_cancel_events(status_vector, db_handle,
02087 event_id);
02088 end;
02089
02090 function TZFirebird21PlainDriver.isc_close_blob(status_vector: PISC_STATUS;
02091 blob_handle: PISC_BLOB_HANDLE): ISC_STATUS;
02092 begin
02093 Result := ZPlainFirebird21.isc_close_blob(status_vector, blob_handle);
02094 end;
02095
02096 function TZFirebird21PlainDriver.isc_commit_retaining(
02097 status_vector: PISC_STATUS; tran_handle: PISC_TR_HANDLE): ISC_STATUS;
02098 begin
02099 Result := ZPlainFirebird21.isc_commit_retaining(status_vector, tran_handle);
02100 end;
02101
02102 function TZFirebird21PlainDriver.isc_commit_transaction(
02103 status_vector: PISC_STATUS; tran_handle: PISC_TR_HANDLE): ISC_STATUS;
02104 begin
02105 Result := ZPlainFirebird21.isc_commit_transaction(status_vector, tran_handle);
02106 end;
02107
02108 function TZFirebird21PlainDriver.isc_create_blob2(status_vector: PISC_STATUS;
02109 db_handle: PISC_DB_HANDLE; tran_handle: PISC_TR_HANDLE;
02110 blob_handle: PISC_BLOB_HANDLE; blob_id: PISC_QUAD; bpb_length: Short;
02111 bpb_address: PChar): ISC_STATUS;
02112 begin
02113 Result := ZPlainFirebird21.isc_create_blob2(status_vector, db_handle,
02114 tran_handle, blob_handle, blob_id, bpb_length, bpb_address);
02115 end;
02116
02117 function TZFirebird21PlainDriver.isc_database_info(status_vector: PISC_STATUS;
02118 db_handle: PISC_DB_HANDLE; item_list_buffer_length: Short;
02119 item_list_buffer: PChar; result_buffer_length: Short;
02120 result_buffer: PChar): ISC_STATUS;
02121 begin
02122 Result := ZPlainFirebird21.isc_database_info(status_vector, db_handle,
02123 item_list_buffer_length, item_list_buffer, result_buffer_length,
02124 result_buffer);
02125 end;
02126
02127 function TZFirebird21PlainDriver.isc_transaction_info(status_vector: PISC_STATUS;
02128 tr_handle: PISC_TR_HANDLE; item_list_buffer_length: Short;
02129 item_list_buffer: PChar; result_buffer_length: Short;
02130 result_buffer: PChar): ISC_STATUS;
02131 begin
02132 Result := ZPlainFirebird21.isc_transaction_info(status_vector, tr_handle,
02133 item_list_buffer_length, item_list_buffer, result_buffer_length,
02134 result_buffer);
02135 end;
02136
02137 procedure TZFirebird21PlainDriver.isc_decode_date(ib_date: PISC_QUAD;
02138 tm_date: PCTimeStructure);
02139 begin
02140 ZPlainFirebird21.isc_decode_date(ib_date, tm_date);
02141 end;
02142
02143 procedure TZFirebird21PlainDriver.isc_decode_sql_date(ib_date: PISC_DATE;
02144 tm_date: PCTimeStructure);
02145 begin
02146 ZPlainFirebird21.isc_decode_sql_date(ib_date, tm_date);
02147 end;
02148
02149 procedure TZFirebird21PlainDriver.isc_decode_sql_time(ib_time: PISC_TIME;
02150 tm_date: PCTimeStructure);
02151 begin
02152 ZPlainFirebird21.isc_decode_sql_time(ib_time, tm_date);
02153 end;
02154
02155 procedure TZFirebird21PlainDriver.isc_decode_timestamp(
02156 ib_timestamp: PISC_TIMESTAMP; tm_date: PCTimeStructure);
02157 begin
02158 ZPlainFirebird21.isc_decode_timestamp(ib_timestamp, tm_date);
02159 end;
02160
02161 function TZFirebird21PlainDriver.isc_detach_database(status_vector: PISC_STATUS;
02162 db_handle: PISC_DB_HANDLE): ISC_STATUS;
02163 begin
02164 Result := ZPlainFirebird21.isc_detach_database(status_vector, db_handle);
02165 end;
02166
02167 function TZFirebird21PlainDriver.isc_drop_database(status_vector: PISC_STATUS;
02168 db_handle: PISC_DB_HANDLE): ISC_STATUS;
02169 begin
02170 Result := ZPlainFirebird21.isc_drop_database(status_vector, db_handle);
02171 end;
02172
02173 function TZFirebird21PlainDriver.isc_dsql_alloc_statement2(
02174 status_vector: PISC_STATUS; db_handle: PISC_DB_HANDLE;
02175 stmt_handle: PISC_STMT_HANDLE): ISC_STATUS;
02176 begin
02177 Result := ZPlainFirebird21.isc_dsql_alloc_statement2(status_vector,
02178 db_handle, stmt_handle);
02179 end;
02180
02181 function TZFirebird21PlainDriver.isc_dsql_allocate_statement(
02182 status_vector: PISC_STATUS; db_handle: PISC_DB_HANDLE;
02183 stmt_handle: PISC_STMT_HANDLE): ISC_STATUS;
02184 begin
02185 Result := ZPlainFirebird21.isc_dsql_allocate_statement(status_vector,
02186 db_handle, stmt_handle);
02187 end;
02188
02189 function TZFirebird21PlainDriver.isc_dsql_describe(status_vector: PISC_STATUS;
02190 stmt_handle: PISC_STMT_HANDLE; dialect: Word; xsqlda: PXSQLDA): ISC_STATUS;
02191 begin
02192 Result := ZPlainFirebird21.isc_dsql_describe(status_vector, stmt_handle,
02193 dialect, xsqlda);
02194 end;
02195
02196 function TZFirebird21PlainDriver.isc_dsql_describe_bind(
02197 status_vector: PISC_STATUS; stmt_handle: PISC_STMT_HANDLE; dialect: Word;
02198 xsqlda: PXSQLDA): ISC_STATUS;
02199 begin
02200 Result := ZPlainFirebird21.isc_dsql_describe_bind(status_vector, stmt_handle,
02201 dialect, xsqlda);
02202 end;
02203
02204 function TZFirebird21PlainDriver.isc_dsql_execute(status_vector: PISC_STATUS;
02205 tran_handle: PISC_TR_HANDLE; stmt_handle: PISC_STMT_HANDLE; dialect: Word;
02206 xsqlda: PXSQLDA): ISC_STATUS;
02207 begin
02208 Result := ZPlainFirebird21.isc_dsql_execute(status_vector, tran_handle,
02209 stmt_handle, dialect, xsqlda);
02210 end;
02211
02212 function TZFirebird21PlainDriver.isc_dsql_execute_immediate(
02213 status_vector: PISC_STATUS; db_handle: PISC_DB_HANDLE;
02214 tran_handle: PISC_TR_HANDLE; length: Word; statement: PChar;
02215 dialect: Word; xsqlda: PXSQLDA): ISC_STATUS;
02216 begin
02217 Result := ZPlainFirebird21.isc_dsql_execute_immediate(status_vector,
02218 db_handle, tran_handle, length, statement, dialect, xsqlda);
02219 end;
02220
02221 function TZFirebird21PlainDriver.isc_dsql_execute2(status_vector: PISC_STATUS;
02222 tran_handle: PISC_TR_HANDLE; stmt_handle: PISC_STMT_HANDLE;
02223 dialect: Word; in_xsqlda, out_xsqlda: PXSQLDA): ISC_STATUS;
02224 begin
02225 Result := ZPlainFirebird21.isc_dsql_execute2(status_vector, tran_handle,
02226 stmt_handle, dialect, in_xsqlda, out_xsqlda);
02227 end;
02228
02229 function TZFirebird21PlainDriver.isc_dsql_fetch(status_vector: PISC_STATUS;
02230 stmt_handle: PISC_STMT_HANDLE; dialect: Word;
02231 xsqlda: PXSQLDA): ISC_STATUS;
02232 begin
02233 Result := ZPlainFirebird21.isc_dsql_fetch(status_vector, stmt_handle, dialect,
02234 xsqlda);
02235 end;
02236
02237 function TZFirebird21PlainDriver.isc_dsql_free_statement(
02238 status_vector: PISC_STATUS; stmt_handle: PISC_STMT_HANDLE;
02239 options: Word): ISC_STATUS;
02240 begin
02241 Result := ZPlainFirebird21.isc_dsql_free_statement(status_vector, stmt_handle,
02242 options);
02243 end;
02244
02245 function TZFirebird21PlainDriver.isc_dsql_prepare(
02246 status_vector: PISC_STATUS; tran_handle: PISC_TR_HANDLE;
02247 stmt_handle: PISC_STMT_HANDLE; length: Word; statement: PChar;
02248 dialect: Word; xsqlda: PXSQLDA): ISC_STATUS;
02249 begin
02250 Result := ZPlainFirebird21.isc_dsql_prepare(status_vector, tran_handle,
02251 stmt_handle, length, statement, dialect, xsqlda);
02252 end;
02253
02254 function TZFirebird21PlainDriver.isc_dsql_set_cursor_name(
02255 status_vector: PISC_STATUS; stmt_handle: PISC_STMT_HANDLE;
02256 cursor_name: PChar; _type: Word): ISC_STATUS;
02257 begin
02258 Result := ZPlainFirebird21.isc_dsql_set_cursor_name(status_vector,
02259 stmt_handle, cursor_name, _type);
02260 end;
02261
02262 function TZFirebird21PlainDriver.isc_dsql_sql_info(
02263 status_vector: PISC_STATUS; stmt_handle: PISC_STMT_HANDLE;
02264 item_length: Short; items: PChar; buffer_length: Short;
02265 buffer: PChar): ISC_STATUS;
02266 begin
02267 Result := ZPlainFirebird21.isc_dsql_sql_info(status_vector, stmt_handle,
02268 item_length, items, buffer_length, buffer);
02269 end;
02270
02271 procedure TZFirebird21PlainDriver.isc_encode_date(tm_date: PCTimeStructure;
02272 ib_date: PISC_QUAD);
02273 begin
02274 ZPlainFirebird21.isc_encode_date(tm_date, ib_date);
02275 end;
02276
02277 procedure TZFirebird21PlainDriver.isc_encode_sql_date(
02278 tm_date: PCTimeStructure; ib_date: PISC_DATE);
02279 begin
02280 ZPlainFirebird21.isc_encode_sql_date(tm_date, ib_date);
02281 end;
02282
02283 procedure TZFirebird21PlainDriver.isc_encode_sql_time(
02284 tm_date: PCTimeStructure; ib_time: PISC_TIME);
02285 begin
02286 ZPlainFirebird21.isc_encode_sql_time(tm_date, ib_time);
02287 end;
02288
02289 procedure TZFirebird21PlainDriver.isc_encode_timestamp(
02290 tm_date: PCTimeStructure; ib_timestamp: PISC_TIMESTAMP);
02291 begin
02292 ZPlainFirebird21.isc_encode_timestamp(tm_date, ib_timestamp);
02293 end;
02294
02295 function TZFirebird21PlainDriver.isc_event_block(event_buffer,
02296 result_buffer: PPChar; id_count: Word;
02297 event_list: array of PChar): ISC_LONG;
02298 begin
02299 Result := ZPlainFirebird21.isc_event_block(event_buffer, result_buffer,
02300 id_count, event_list);
02301 end;
02302
02303 procedure TZFirebird21PlainDriver.isc_event_counts(
02304 status_vector: PISC_STATUS; buffer_length: Short; event_buffer,
02305 result_buffer: PChar);
02306 begin
02307 ZPlainFirebird21.isc_event_counts(status_vector, buffer_length,
02308 event_buffer, result_buffer);
02309 end;
02310
02311 function TZFirebird21PlainDriver.isc_free(isc_arg1: PChar): ISC_LONG;
02312 begin
02313 Result := ZPlainFirebird21.isc_free(isc_arg1);
02314 end;
02315
02316 function TZFirebird21PlainDriver.isc_get_segment(
02317 status_vector: PISC_STATUS; blob_handle: PISC_BLOB_HANDLE;
02318 actual_seg_length: PWord; seg_buffer_length: Word;
02319 seg_buffer: PChar): ISC_STATUS;
02320 begin
02321 Result := ZPlainFirebird21.isc_get_segment(status_vector, blob_handle,
02322 actual_seg_length, seg_buffer_length, seg_buffer);
02323 end;
02324
02325 function TZFirebird21PlainDriver.isc_interprete(buffer: PChar;
02326 status_vector: PPISC_STATUS): ISC_STATUS;
02327 var
02328 bufsize : integer;
02329 begin
02330 bufsize := 1024;
02331 Result := ZPlainFirebird21.fb_interpret(buffer, bufsize, status_vector);
02332
02333 end;
02334
02335 function TZFirebird21PlainDriver.isc_open_blob2(status_vector: PISC_STATUS;
02336 db_handle: PISC_DB_HANDLE; tran_handle: PISC_TR_HANDLE;
02337 blob_handle: PISC_BLOB_HANDLE; blob_id: PISC_QUAD; bpb_length: Short;
02338 bpb_buffer: PChar): ISC_STATUS;
02339 begin
02340 Result := ZPlainFirebird21.isc_open_blob2(status_vector, db_handle,
02341 tran_handle, blob_handle, blob_id, bpb_length, bpb_buffer);
02342 end;
02343
02344 function TZFirebird21PlainDriver.isc_put_segment(
02345 status_vector: PISC_STATUS; blob_handle: PISC_BLOB_HANDLE;
02346 seg_buffer_len: Word; seg_buffer: PChar): ISC_STATUS;
02347 begin
02348 Result := ZPlainFirebird21.isc_put_segment(status_vector, blob_handle,
02349 seg_buffer_len, seg_buffer);
02350 end;
02351
02352 function TZFirebird21PlainDriver.isc_que_events(status_vector: PISC_STATUS;
02353 db_handle: PISC_DB_HANDLE; event_id: PISC_LONG; length: Short;
02354 event_buffer: PChar; event_function: TISC_CALLBACK;
02355 event_function_arg: PVoid): ISC_STATUS;
02356 begin
02357 Result := ZPlainFirebird21.isc_que_events(status_vector, db_handle,
02358 event_id, length, event_buffer, event_function, event_function_arg)
02359 end;
02360
02361 function TZFirebird21PlainDriver.isc_rollback_retaining(
02362 status_vector: PISC_STATUS; tran_handle: PISC_TR_HANDLE): ISC_STATUS;
02363 begin
02364 Result := ZPlainFirebird21.isc_rollback_retaining(status_vector, tran_handle);
02365 end;
02366
02367 procedure TZFirebird21PlainDriver.isc_sql_interprete(sqlcode: Short;
02368 buffer: PChar; buffer_length: Short);
02369 begin
02370 ZPlainFirebird21.isc_sql_interprete(sqlcode, buffer, buffer_length);
02371 end;
02372
02373 function TZFirebird21PlainDriver.isc_sqlcode(
02374 status_vector: PISC_STATUS): ISC_LONG;
02375 begin
02376 Result := ZPlainFirebird21.isc_sqlcode(status_vector);
02377 end;
02378
02379 function TZFirebird21PlainDriver.isc_rollback_transaction(
02380 status_vector: PISC_STATUS; tran_handle: PISC_TR_HANDLE): ISC_STATUS;
02381 begin
02382 Result := ZPlainFirebird21.isc_rollback_transaction(status_vector, tran_handle);
02383 end;
02384
02385 function TZFirebird21PlainDriver.isc_start_multiple(
02386 status_vector: PISC_STATUS; tran_handle: PISC_TR_HANDLE;
02387 db_handle_count: Short; teb_vector_address: PISC_TEB): ISC_STATUS;
02388 begin
02389 Result := ZPlainFirebird21.isc_start_multiple(status_vector, tran_handle,
02390 db_handle_count, teb_vector_address);
02391 end;
02392
02393 function TZFirebird21PlainDriver.isc_start_transaction(
02394 status_vector: PISC_STATUS; tran_handle: PISC_TR_HANDLE;
02395 db_handle_count: Short; db_handle: PISC_DB_HANDLE; tpb_length: Word;
02396 tpb_address: PChar): ISC_STATUS;
02397 begin
02398 Result := ZPlainFirebird21.isc_start_transaction(status_vector, tran_handle,
02399 db_handle_count, db_handle, tpb_length, tpb_address);
02400 end;
02401
02402 function TZFirebird21PlainDriver.isc_vax_integer(buffer: PChar;
02403 length: Short): ISC_LONG;
02404 begin
02405 Result := ZPlainFirebird21.isc_vax_integer(buffer, length);
02406 end;
02407
02408
02409 { IZFirebirdD21PlainDriver }
02410
02411 function TZFirebirdD21PlainDriver.GetProtocol: string;
02412 begin
02413 Result := 'firebirdd-2.1';
02414 end;
02415
02416 function TZFirebirdD21PlainDriver.GetDescription: string;
02417 begin
02418 Result := 'Native Plain Driver for Firebird Embedded 2.1';
02419 end;
02420
02421 procedure TZFirebirdD21PlainDriver.Initialize;
02422 begin
02423 ZPlainFirebird21.LibraryLoaderEmbedded.LoadIfNeeded;
02424
02425 end;
02426 end.