📄 zlibmysql.pas
字号:
info: PChar;
db: PChar;
port: Integer;
client_flag: Integer;
server_capabilities: Integer;
protocol_version: Integer;
field_count: Integer;
{$IFDEF NEW_LIBMYSQL_DLL}
server_status: Integer;
{$ENDIF}
thread_id: LongInt;
affected_rows: TInt64;
insert_id: TInt64;
extra_info: TInt64;
packet_length: LongInt;
status: mysql_status;
fields: PMYSQL_FIELD;
field_alloc: MEM_ROOT;
free_me, reconnect: TBool;
options: _mysql_options;
scramble_buff: array[0..8] of Char;
charset: PChar;
{$IFDEF NEW_LIBMYSQL_DLL}
server_language: Integer;
{$ENDIF}
end;
PMYSQL = ^MYSQL;
MYSQL_RES = packed record
row_count: TInt64;
field_count: Integer;
current_field: Integer;
fields: PMYSQL_FIELD;
data: PMYSQL_DATA;
data_cursor: PMYSQL_ROWS;
field_alloc: MEM_ROOT;
row: PMYSQL_ROW;
current_row: PMYSQL_ROW;
lengths: PLongInt;
handle: PMYSQL;
eof: TBool;
end;
PMYSQL_RES = ^MYSQL_RES;
TModifyType = (MODIFY_INSERT, MODIFY_UPDATE, MODIFY_DELETE);
TQuoteOptions = (QUOTE_STRIP_CR,QUOTE_STRIP_LF);
TQuoteOptionsSet = set of TQuoteOptions;
{************** Plain API Function types definition *************}
Tmysql_debug = procedure(Debug: PChar);
Tmysql_dump_debug_info = function(Handle: PMYSQL): Integer;
Tmysql_init = function(Handle: PMYSQL): PMYSQL;
{$IFNDEF LINUX} stdcall {$ELSE} cdecl {$ENDIF};
Tmysql_connect = function(Handle: PMYSQL; const Host, User, Passwd: PChar):
PMYSQL; {$IFNDEF LINUX} stdcall {$ELSE} cdecl {$ENDIF};
Tmysql_real_connect = function(Handle: PMYSQL;
const Host, User, Passwd, Db: PChar; Port: Cardinal;
unix_socket: PChar; clientflag: Cardinal): PMYSQL;
{$IFNDEF LINUX} stdcall {$ELSE} cdecl {$ENDIF};
Tmysql_close = procedure(Handle: PMYSQL);
{$IFNDEF LINUX} stdcall {$ELSE} cdecl {$ENDIF};
Tmysql_query = function(Handle: PMYSQL; const Query: PChar): Integer;
{$IFNDEF LINUX} stdcall {$ELSE} cdecl {$ENDIF};
Tmysql_real_query = function(Handle: PMYSQL; const Query: PChar;
len: Integer): Integer;
{$IFNDEF LINUX} stdcall {$ELSE} cdecl {$ENDIF};
Tmysql_select_db = function(Handle: PMYSQL; const Db: PChar): Integer;
{$IFNDEF LINUX} stdcall {$ELSE} cdecl {$ENDIF};
Tmysql_create_db = function(Handle: PMYSQL; const Db: PChar): Integer;
{$IFNDEF LINUX} stdcall {$ELSE} cdecl {$ENDIF};
Tmysql_drop_db = function(Handle: PMYSQL; const Db: PChar): Integer;
{$IFNDEF LINUX} stdcall {$ELSE} cdecl {$ENDIF};
Tmysql_shutdown = function(Handle: PMYSQL): Integer;
{$IFNDEF LINUX} stdcall {$ELSE} cdecl {$ENDIF};
Tmysql_refresh = function(Handle: PMYSQL; Options: Cardinal): Integer;
{$IFNDEF LINUX} stdcall {$ELSE} cdecl {$ENDIF};
Tmysql_kill = function(Handle: PMYSQL; Pid: longint): Integer;
{$IFNDEF LINUX} stdcall {$ELSE} cdecl {$ENDIF};
Tmysql_ping = function(Handle: PMYSQL): Integer;
{$IFNDEF LINUX} stdcall {$ELSE} cdecl {$ENDIF};
Tmysql_stat = function(Handle: PMYSQL): PChar;
{$IFNDEF LINUX} stdcall {$ELSE} cdecl {$ENDIF};
Tmysql_options = function(Handle: PMYSQL; Option: mysql_option;
const Arg: PChar): Integer; {$IFNDEF LINUX} stdcall {$ELSE} cdecl {$ENDIF};
Tmysql_escape_string = function(PTo, PFrom: PChar; Len: Cardinal): Cardinal;
{$IFNDEF LINUX} stdcall {$ELSE} cdecl {$ENDIF};
Tmysql_get_server_info = function(Handle: PMYSQL): PChar;
{$IFNDEF LINUX} stdcall {$ELSE} cdecl {$ENDIF};
Tmysql_get_client_info = function: PChar;
{$IFNDEF LINUX} stdcall {$ELSE} cdecl {$ENDIF};
Tmysql_get_host_info = function(Handle: PMYSQL): PChar;
{$IFNDEF LINUX} stdcall {$ELSE} cdecl {$ENDIF};
Tmysql_get_proto_info = function(Handle: PMYSQL): Cardinal;
{$IFNDEF LINUX} stdcall {$ELSE} cdecl {$ENDIF};
Tmysql_list_dbs = function(Handle: PMYSQL; Wild: PChar): PMYSQL_RES;
{$IFNDEF LINUX} stdcall {$ELSE} cdecl {$ENDIF};
Tmysql_list_tables = function(Handle: PMYSQL; const Wild: PChar): PMYSQL_RES;
{$IFNDEF LINUX} stdcall {$ELSE} cdecl {$ENDIF};
Tmysql_list_fields = function(Handle: PMYSQL; const Table, Wild: PChar):
PMYSQL_RES; {$IFNDEF LINUX} stdcall {$ELSE} cdecl {$ENDIF};
Tmysql_list_processes = function(Handle: PMYSQL): PMYSQL_RES;
{$IFNDEF LINUX} stdcall {$ELSE} cdecl {$ENDIF};
Tmysql_store_result = function(Handle: PMYSQL): PMYSQL_RES;
{$IFNDEF LINUX} stdcall {$ELSE} cdecl {$ENDIF};
Tmysql_use_result = function(Handle: PMYSQL): PMYSQL_RES;
{$IFNDEF LINUX} stdcall {$ELSE} cdecl {$ENDIF};
Tmysql_free_result = procedure(Result: PMYSQL_RES);
{$IFNDEF LINUX} stdcall {$ELSE} cdecl {$ENDIF};
Tmysql_fetch_row = function(Result: PMYSQL_RES): PMYSQL_ROW;
{$IFNDEF LINUX} stdcall {$ELSE} cdecl {$ENDIF};
Tmysql_fetch_lengths = function(Result: PMYSQL_RES): PLongInt;
{$IFNDEF LINUX} stdcall {$ELSE} cdecl {$ENDIF};
Tmysql_fetch_field = function(Result: PMYSQL_RES): PMYSQL_FIELD;
{$IFNDEF LINUX} stdcall {$ELSE} cdecl {$ENDIF};
{$IFNDEF OLD_LIBMYSQL_DLL}
Tmysql_data_seek = procedure(Result: PMYSQL_RES; Offset: TInt64);
{$IFNDEF LINUX} stdcall {$ELSE} cdecl {$ENDIF};
{$ELSE}
Tmysql_data_seek = procedure(Result: PMYSQL_RES; Offset: Cardinal);
{$IFNDEF LINUX} stdcall {$ELSE} cdecl {$ENDIF};
{$ENDIF}
Tmysql_row_seek = function(Result: PMYSQL_RES; Row: MYSQL_ROW_OFFSET):
MYSQL_ROW_OFFSET; {$IFNDEF LINUX} stdcall {$ELSE} cdecl {$ENDIF};
Tmysql_field_seek = function(Result: PMYSQL_RES; Offset: mysql_field_offset):
mysql_field_offset; {$IFNDEF LINUX} stdcall {$ELSE} cdecl {$ENDIF};
Tmysql_thread_id = function(Handle: PMYSQL): cardinal;
{$IFNDEF LINUX} stdcall {$ELSE} cdecl {$ENDIF};
{************* Plain API Function variables definition ************}
var
mysql_debug: Tmysql_debug;
mysql_dump_debug_info: Tmysql_dump_debug_info;
mysql_init: Tmysql_init;
mysql_connect: Tmysql_connect;
mysql_real_connect: Tmysql_real_connect;
mysql_close: Tmysql_close;
mysql_select_db: Tmysql_select_db;
mysql_create_db: Tmysql_create_db;
mysql_drop_db: Tmysql_drop_db;
mysql_query: Tmysql_query;
mysql_real_query: Tmysql_query;
mysql_shutdown: Tmysql_shutdown;
mysql_refresh: Tmysql_refresh;
mysql_kill: Tmysql_kill;
mysql_ping: Tmysql_ping;
mysql_stat: Tmysql_stat;
mysql_options: Tmysql_options;
mysql_escape_string: Tmysql_escape_string;
mysql_get_server_info: Tmysql_get_server_info;
mysql_get_client_info: Tmysql_get_client_info;
mysql_get_host_info: Tmysql_get_host_info;
mysql_get_proto_info: Tmysql_get_proto_info;
mysql_list_dbs: Tmysql_list_dbs;
mysql_list_tables: Tmysql_list_tables;
mysql_list_fields: Tmysql_list_fields;
mysql_list_processes: Tmysql_list_processes;
mysql_data_seek: Tmysql_data_seek;
mysql_row_seek: Tmysql_row_seek;
mysql_field_seek: Tmysql_field_seek;
mysql_fetch_row: Tmysql_fetch_row;
mysql_fetch_lengths: Tmysql_fetch_lengths;
mysql_fetch_field: Tmysql_fetch_field;
mysql_store_result: Tmysql_store_result;
mysql_use_result: Tmysql_use_result;
mysql_free_result: Tmysql_free_result;
mysql_thread_id: Tmysql_thread_id;
function MySqlLoadLib: Boolean;
const
DLL: string = DEFAULT_DLL_LOCATION;
hDLL: THandle = 0;
LibLoaded: Boolean = False;
implementation
uses SysUtils, ZDBaseConst;
{ Initialize MySQL dynamic library }
function MySqlLoadLib: Boolean;
begin
if hDLL = 0 then
begin
hDLL := GetModuleHandle(PChar(DLL));
LibLoaded := False;
if hDLL = 0 then
begin
hDLL := LoadLibrary(PChar(DLL));
LibLoaded := True;
end;
end;
if hDLL <> 0 then begin
@mysql_debug := GetProcAddress(hDLL,'mysql_debug');
@mysql_dump_debug_info := GetProcAddress(hDLL,'mysql_dump_debug_info');
@mysql_init := GetProcAddress(hDLL,'mysql_init');
@mysql_connect := GetProcAddress(hDLL,'mysql_connect');
@mysql_real_connect := GetProcAddress(hDLL,'mysql_real_connect');
@mysql_close := GetProcAddress(hDLL,'mysql_close');
@mysql_select_db := GetProcAddress(hDLL,'mysql_select_db');
@mysql_create_db := GetProcAddress(hDLL,'mysql_create_db');
@mysql_drop_db := GetProcAddress(hDLL,'mysql_drop_db');
@mysql_query := GetProcAddress(hDLL,'mysql_query');
@mysql_real_query := GetProcAddress(hDLL,'mysql_real_query');
@mysql_shutdown := GetProcAddress(hDLL,'mysql_shutdown');
@mysql_refresh := GetProcAddress(hDLL,'mysql_refresh');
@mysql_kill := GetProcAddress(hDLL,'mysql_kill');
@mysql_ping := GetProcAddress(hDLL,'mysql_ping');
@mysql_stat := GetProcAddress(hDLL,'mysql_stat');
@mysql_options := GetProcAddress(hDLL,'mysql_options');
@mysql_escape_string := GetProcAddress(hDLL,'mysql_escape_string');
@mysql_get_server_info := GetProcAddress(hDLL,'mysql_get_server_info');
@mysql_get_client_info := GetProcAddress(hDLL,'mysql_get_client_info');
@mysql_get_host_info := GetProcAddress(hDLL,'mysql_get_host_info');
@mysql_get_proto_info := GetProcAddress(hDLL,'mysql_get_proto_info');
@mysql_list_fields := GetProcAddress(hDLL,'mysql_list_fields');
@mysql_list_processes := GetProcAddress(hDLL,'mysql_list_processes');
@mysql_list_dbs := GetProcAddress(hDLL,'mysql_list_dbs');
@mysql_list_tables := GetProcAddress(hDLL,'mysql_list_tables');
@mysql_data_seek := GetProcAddress(hDLL,'mysql_data_seek');
@mysql_row_seek := GetProcAddress(hDLL,'mysql_row_seek');
@mysql_field_seek := GetProcAddress(hDLL,'mysql_field_seek');
@mysql_fetch_row := GetProcAddress(hDLL,'mysql_fetch_row');
@mysql_fetch_lengths := GetProcAddress(hDLL,'mysql_fetch_lengths');
@mysql_fetch_field := GetProcAddress(hDLL,'mysql_fetch_field');
@mysql_use_result := GetProcAddress(hDLL,'mysql_use_result');
@mysql_store_result := GetProcAddress(hDLL,'mysql_store_result');
@mysql_free_result := GetProcAddress(hDLL,'mysql_free_result');
@mysql_thread_id := GetProcAddress(hDLL,'mysql_thread_id');
Result := True;
end else
raise Exception.Create(Format(SLibraryNotFound,[DLL]));
end;
initialization
finalization
if (hDLL <> 0) and LibLoaded then
FreeLibrary(hDLL);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -