delphi mysql.pas_Delphi连接MySql(待测试验证,使用mysql.pas未通过)

//-----------------------------------------------------------------------------------------------//

//MySQL Client API for Borland Delphi (version 4 and above)//

//Pascal Interface Unit for libmySQL.dll, the//Client Library for MySQL AB's SQL Database Server//

//This is a literal translation of relevant parts of MySQL AB's//C header files, mysql.h, mysql_com.h, and mysql_version.h//

//Copyright (c) 1999-2002 Matthias Fichtner//(see license.txt for licensing information)//

//-----------------------------------------------------------------------------------------------//See mysql.h for MySQL AB's copyright and GPL notice//-----------------------------------------------------------------------------------------------//

//17-Aug-1999 mf Translated mysql.h MySQL 3.22.24//19-Aug-1999 mf Corrected some type definitions MySQL 3.22.24//20-Aug-1999 mf Finished debugging the unit MySQL 3.22.24//18-Sep-1999 mf Code maintenance for release 3.22.26a MySQL 3.22.26a//22-Oct-1999 mf Code maintenance for release 3.22.28 MySQL 3.22.28//02-Jan-2000 mf Code maintenance for release 3.22.29 MySQL 3.22.29//21-Jan-2000 mf Code maintenance for release 3.22.30 MySQL 3.22.30//07-Feb-2000 mf Code maintenance for release 3.22.31 MySQL 3.22.31//16-Feb-2000 mf Code maintenance for release 3.22.32 MySQL 3.22.32//13-Aug-2000 mf Code maintenance for release 3.22.34 MySQL 3.22.34//14-Aug-2000 mf Reworked entire unit for first 3.23 release MySQL 3.23.19-beta//14-Aug-2000 mf Added mysql_character_set_name() MySQL 3.23.22-beta//11-Sep-2000 mf Added IS_NUM_FIELD and INTERNAL_NUM_FIELD MySQL 3.23.24-beta//08-Oct-2000 mf Modified TMEM_ROOT, enum_server_command, MySQL 3.23.25-beta//and INTERNAL_NUM_FIELD//01-Nov-2000 mf Code maintenance for release 3.23.27 MySQL 3.23.27-beta//25-Nov-2000 mf Code maintenance for release 3.23.28 MySQL 3.23.28-gamma//05-Jan-2001 mf Code maintenance for release 3.23.30 MySQL 3.23.30-gamma//19-Jan-2001 mf Code maintenance for release 3.23.31 MySQL 3.23.31//11-Mar-2001 mf Added functions mysql_real_send_query(), MySQL 3.23.33//mysql_send_query(), and mysql_reap_query()//28-Mai-2001 mf Modified mysql_send_query(), removed MySQL 3.23.38//mysql_real_send_query(), mysql_reap_query(),//added mysql_read_query_result(), and fixed//CLIENT_TRANSACTIONS//07-Aug-2001 mf Code maintenance for release 3.23.40 MySQL 3.23.40//23-Sep-2001 mf Code maintenance for release 3.23.42 MySQL 3.23.42//29-Jan-2002 mf Added libmysql_load(), libmysql_free(), MySQL 3.23.47//libmysql_status and LIBMYSQL_ constants//for dynamic loading of libmySQL.dll//11-Mar-2002 mf Added MYSQL_OPT_LOCAL_INFILE to mysql_option MySQL 3.23.49//

//-----------------------------------------------------------------------------------------------//

//Latest releases of mysql.pas are made available through the//distribution site at: http://www.fichtner.net/delphi/mysql///

//Please send questions, bug reports, and suggestions regarding//mysql.pas to Matthias Fichtner //

//See readme.txt for an introduction and documentation.//See license.txt for licensing information and disclaimer.//

//-----------------------------------------------------------------------------------------------//This unit is provided "as is". Use it at your own risk.//-----------------------------------------------------------------------------------------------

unitmysql;//-----------------------------------------------------------------------------------------------

INTERFACE//-----------------------------------------------------------------------------------------------

usesWindows,//Needed for some type definitions

Winsock; //Needed for some type definitions

//----------------//From mysql.h ...//----------------

typemy_bool=byte;

gptr=pChar;typePUSED_MEM= ^TUSED_MEM; //struct for once_alloc

TUSED_MEM = recordnext: PUSED_MEM;//Next block in use

left: longword; //memory left in block

size: longword; //size of block

end;typeerror_proc= procedure;typePMEM_ROOT=^TMEM_ROOT;

TMEM_ROOT= record

free: PUSED_MEM;

used: PUSED_MEM;

pre_alloc: PUSED_MEM;

min_malloc: longword;

block_size: longword;

error_handler: error_proc;end;typemy_socket=TSocket;//--------------------//From mysql_com.h ...//--------------------

constNAME_LEN= 64; //Field/table name length

HOSTNAME_LENGTH = 60;

USERNAME_LENGTH= 16;

SERVER_VERSION_LENGTH= 60;

LOCAL_HOST= 'localhost';

LOCAL_HOST_NAMEDPIPE= '.';

MYSQL_NAMEDPIPE= 'MySQL';

MYSQL_SERVICENAME= 'MySql';typeenum_server_command=(

COM_SLEEP, COM_QUIT, COM_INIT_DB, COM_QUERY,

COM_FIELD_LIST, COM_CREATE_DB, COM_DROP_DB, COM_REFRESH,

COM_SHUTDOWN, COM_STATISTICS,

COM_PROCESS_INFO, COM_CONNECT, COM_PROCESS_KILL,

COM_DEBUG, COM_PING, COM_TIME, COM_DELAYED_INSERT,

COM_CHANGE_USER, COM_BINLOG_DUMP,

COM_TABLE_DUMP, COM_CONNECT_OUT

);constNOT_NULL_FLAG= 1; //Field can't be NULL

PRI_KEY_FLAG = 2; //Field is part of a primary key

UNIQUE_KEY_FLAG = 4; //Field is part of a unique key

MULTIPLE_KEY_FLAG = 8; //Field is part of a key

BLOB_FLAG = 16; //Field is a blob

UNSIGNED_FLAG = 32; //Field is unsigned

ZEROFILL_FLAG = 64; //Field is zerofill

BINARY_FLAG = 128;//The following are only sent to new clients

ENUM_FLAG= 256; //field is an enum

AUTO_INCREMENT_FLAG = 512; //field is a autoincrement field

TIMESTAMP_FLAG = 1024; //Field is a timestamp

SET_FLAG = 2048; //field is a set

NUM_FLAG = 32768; //Field is num (for clients)

PART_KEY_FLAG = 16384; //Intern; Part of some key

GROUP_FLAG = 32768; //Intern: Group field

UNIQUE_FLAG = 65536; //Intern: Used by sql_yacc

REFRESH_GRANT= 1; //Refresh grant tables

REFRESH_LOG = 2; //Start on new log file

REFRESH_TABLES = 4; //close all tables

REFRESH_HOSTS = 8; //Flush host cache

REFRESH_STATUS = 16; //Flush status variables

REFRESH_THREADS = 32; //Flush status variables

REFRESH_SLAVE = 64; //Reset master info and restart slave

//thread

REFRESH_MASTER = 128; //Remove all bin logs in the index

//and truncate the index

//The following can't be set with mysql_refresh()

REFRESH_READ_LOCK= 16384; //Lock tables for read

REFRESH_FAST = 32768; //Intern flag

CLIENT_LONG_PASSWORD= 1; //new more secure passwords

CLIENT_FOUND_ROWS = 2; //Found instead of affected rows

CLIENT_LONG_FLAG = 4; //Get all column flags

CLIENT_CONNECT_WITH_DB = 8; //One can specify db on connect

CLIENT_NO_SCHEMA = 16; //Don't allow database.table.column

CLIENT_COMPRESS = 32; //Can use compression protcol

CLIENT_ODBC = 64; //Odbc client

CLIENT_LOCAL_FILES = 128; //Can use LOAD DATA LOCAL

CLIENT_IGNORE_SPACE = 256; //Ignore spaces before '('

CLIENT_INTERACTIVE = 1024; //This is an interactive client

CLIENT_SSL = 2048; //Switch to SSL after handshake

CLIENT_IGNORE_SIGPIPE = 4096; //IGNORE sigpipes

CLIENT_TRANSACTIONS = 8192; //Client knows about transactions

SERVER_STATUS_IN_TRANS= 1; //Transaction has started

SERVER_STATUS_AUTOCOMMIT = 2; //Server in auto_commit mode

MYSQL_ERRMSG_SIZE= 200;

NET_READ_TIMEOUT= 30; //Timeout on read

NET_WRITE_TIMEOUT = 60; //Timeout on write

NET_WAIT_TIMEOUT = 8*60*60; //Wait for new query

typePVio=^TVio;

TVio= record

end;typePNET=^TNET;

TNET= recordvio: PVio;

fd: my_socket;

fcntl: longint;

buff, buff_end, write_pos, read_pos: pByte;

last_error:array [0..MYSQL_ERRMSG_SIZE - 1] ofchar;

last_errno, max_packet, timeout, pkt_nr: longword;

error: byte;

return_errno, compress: my_bool;

no_send_ok: my_bool;//needed if we are doing several

//queries in one command ( as in LOAD TABLE ... FROM MASTER ),

//and do not want to confuse the client with OK at the wrong time

remain_in_buf, length, buf_length, where_b: longword;

return_status: pLongword;

reading_or_writing: byte;

save_char: char;end;constpacket_error: longword=$ffffffff;constFIELD_TYPE_DECIMAL= 0;

FIELD_TYPE_TINY= 1;

FIELD_TYPE_SHORT= 2;

FIELD_TYPE_LONG= 3;

FIELD_TYPE_FLOAT= 4;

FIELD_TYPE_DOUBLE= 5;

FIELD_TYPE_NULL= 6;

FIELD_TYPE_TIMESTAMP= 7;

FIELD_TYPE_LONGLONG= 8;

FIELD_TYPE_INT24= 9;

FIELD_TYPE_DATE= 10;

FIELD_TYPE_TIME= 11;

FIELD_TYPE_DATETIME= 12;

FIELD_TYPE_YEAR= 13;

FIELD_TYPE_NEWDATE= 14;

FIELD_TYPE_ENUM= 247;

FIELD_TYPE_SET= 248;

FIELD_TYPE_TINY_BLOB= 249;

FIELD_TYPE_MEDIUM_BLOB= 250;

FIELD_TYPE_LONG_BLOB= 251;

FIELD_TYPE_BLOB= 252;

FIELD_TYPE_VAR_STRING= 253;

FIELD_TYPE_STRING= 254;constFIELD_TYPE_CHAR= FIELD_TYPE_TINY; //For compability

FIELD_TYPE_INTERVAL = FIELD_TYPE_ENUM; //For compability

typeenum_field_types=FIELD_TYPE_DECIMAL..FIELD_TYPE_STRING;//------------------------//From mysql_version.h ...//------------------------

constPROTOCOL_VERSION= 10;

MYSQL_SERVER_VERSION= '3.23.49';

MYSQL_SERVER_SUFFIX= '';

FRM_VER= 6;

MYSQL_VERSION_ID= 32349;

MYSQL_PORT= 3306;

MYSQL_UNIX_ADDR= '/tmp/mysql.sock';//----------------//From mysql.h ...//----------------

functionIS_PRI_KEY(n: longword): boolean;functionIS_NOT_NULL(n: longword): boolean;functionIS_BLOB(n: longword): boolean;functionIS_NUM(t: longword): boolean;typePMYSQL_FIELD=^TMYSQL_FIELD;

TMYSQL_FIELD= recordname: pChar;//Name of column

table: pChar; //Table of column if column was a field

def: pChar; //Default value (set by mysql_list_fields)

_type: enum_field_types; //Type of field. Se mysql_com.h for types

length: longword; //Width of column

max_length: longword; //Max width of selected set

flags: longword; //Div flags

decimals: longword; //Number of decimals in field

end;functionIS_NUM_FIELD(f: PMYSQL_FIELD): boolean;functionINTERNAL_NUM_FIELD(f: PMYSQL_FIELD): boolean;typePMYSQL_ROW= ^TMYSQL_ROW; //return data as array of strings

TMYSQL_ROW = array[0..MaxInt div SizeOf(pChar) - 1] ofpChar;typeMYSQL_FIELD_OFFSET= longword; //offset to current field

typemy_ulonglong=int64;constMYSQL_COUNT_ERROR: my_ulonglong= not 0;typePMYSQL_ROWS=^TMYSQL_ROWS;

TMYSQL_ROWS= recordnext: PMYSQL_ROWS;//list of rows

data: PMYSQL_ROW;end;typeMYSQL_ROW_OFFSET= PMYSQL_ROWS; //offset to current row

typePMYSQL_DATA=^TMYSQL_DATA;

TMYSQL_DATA= recordrows: my_ulonglong;

fields: longword;

data: PMYSQL_ROWS;

alloc: TMEM_ROOT;end;typePMYSQL_OPTIONS=^TMYSQL_OPTIONS;

TMYSQL_OPTIONS= recordconnect_timeout, client_flag: longword;

compress, named_pipe: my_bool;

port: longword;

host, init_command, user, password, unix_socket, db: pChar;

my_cnf_file, my_cnf_group, charset_dir, charset_name: pChar;

use_ssl: my_bool;//if to use SSL or not

ssl_key: pChar; //PEM key file

ssl_cert: pChar; //PEM cert file

ssl_ca: pChar; //PEM CA file

ssl_capath: pChar; //PEM directory of CA-s?

end;typemysql_option=(

MYSQL_OPT_CONNECT_TIMEOUT, MYSQL_OPT_COMPRESS,

MYSQL_OPT_NAMED_PIPE, MYSQL_INIT_COMMAND,

MYSQL_READ_DEFAULT_FILE, MYSQL_READ_DEFAULT_GROUP,

MYSQL_SET_CHARSET_DIR, MYSQL_SET_CHARSET_NAME,

MYSQL_OPT_LOCAL_INFILE

);typemysql_status=(

MYSQL_STATUS_READY, MYSQL_STATUS_GET_RESULT,

MYSQL_STATUS_USE_RESULT

);typePMYSQL_FIELDS=^TMYSQL_FIELDS;

TMYSQL_FIELDS= array[0..MaxInt div SizeOf(TMYSQL_FIELD) - 1] ofTMYSQL_FIELD;typePCHARSET_INFO=^TCHARSET_INFO;

TCHARSET_INFO= record

//Omitted: Structure not necessarily needed.

//Definition of struct charset_info_st can be

//found in include/m_ctype.h

end;typePMYSQL=^TMYSQL;

TMYSQL= recordnet: TNET;//Communication parameters

connector_fd: gptr; //ConnectorFd for SSL

host, user, passwd, unix_socket, server_version, host_info, info, db: pChar;

port, client_flag, server_capabilities: longword;

protocol_version: longword;

field_count: longword;

server_status: longword;

thread_id: longword;//Id for connection in server

affected_rows: my_ulonglong;

insert_id: my_ulonglong;//id if insert on table with NEXTNR

extra_info: my_ulonglong; //Used by mysqlshow

packet_length: longword;

status: mysql_status;

fields: PMYSQL_FIELDS;

field_alloc: TMEM_ROOT;free_me: my_bool; //If free in mysql_close

reconnect: my_bool; //set to 1 if automatic reconnect

options: TMYSQL_OPTIONS;

scramble_buff:array [0..8] ofchar;

charset: PCHARSET_INFO;

server_language: longword;end;typePMYSQL_RES=^TMYSQL_RES;

TMYSQL_RES= recordrow_count: my_ulonglong;

field_count, current_field: longword;

fields: PMYSQL_FIELDS;

data: PMYSQL_DATA;

data_cursor: PMYSQL_ROWS;

field_alloc: TMEM_ROOT;

row: PMYSQL_ROW;//If unbuffered read

current_row: PMYSQL_ROW; //buffer to current row

lengths: pLongword; //column lengths of current row

handle: PMYSQL; //for unbuffered reads

eof: my_bool; //Used my mysql_fetch_row

end;//Functions to get information from the MYSQL and MYSQL_RES structures//Should definitely be used if one uses shared libraries

varmysql_num_rows:function(res: PMYSQL_RES): my_ulonglong; stdcall;

mysql_num_fields:function(res: PMYSQL_RES): longword; stdcall;

mysql_eof:function(res: PMYSQL_RES): my_bool; stdcall;

mysql_fetch_field_direct:function(res: PMYSQL_RES; fieldnr: longword): PMYSQL_FIELD; stdcall;

mysql_fetch_fields:function(res: PMYSQL_RES): PMYSQL_FIELDS; stdcall;

mysql_row_tell:function(res: PMYSQL_RES): PMYSQL_ROWS; stdcall;

mysql_field_tell:function(res: PMYSQL_RES): longword; stdcall;varmysql_field_count:function(_mysql: PMYSQL): longword; stdcall;

mysql_affected_rows:function(_mysql: PMYSQL): my_ulonglong; stdcall;

mysql_insert_id:function(_mysql: PMYSQL): my_ulonglong; stdcall;

mysql_errno:function(_mysql: PMYSQL): longword; stdcall;

mysql_error:function(_mysql: PMYSQL): pChar; stdcall;

mysql_info:function(_mysql: PMYSQL): pChar; stdcall;

mysql_thread_id:function(_mysql: PMYSQL): longword; stdcall;

mysql_character_set_name: function(_mysql: PMYSQL): pChar; stdcall;typePMYSQL_LENGTHS=^TMYSQL_LENGTHS;

TMYSQL_LENGTHS= array[0..MaxInt div SizeOf(longword) - 1] oflongword;typeextend_buffer_func= function(void: pointer; _to: pChar; length: pLongword): pChar;varmysql_init:function(_mysql: PMYSQL): PMYSQL; stdcall;{$IFDEF HAVE_OPENSSL}mysql_ssl_set: function(_mysql: PMYSQL; const key, cert, ca, capath: pChar): longint; stdcall;

mysql_ssl_cipher:function(_mysql: PMYSQL): pChar; stdcall;

mysql_ssl_clear:function(_mysql: PMYSQL): longint; stdcall;{$ENDIF} //HAVE_OPENSSL

mysql_connect: function(_mysql: PMYSQL; const host, user, passwd: pChar): PMYSQL; stdcall;

mysql_change_user:function(_mysql: PMYSQL; const user, passwd, db: pChar): my_bool; stdcall;

mysql_real_connect:function(_mysql: PMYSQL; const host, user, passwd, db: pChar; port: longword; const unix_socket: pChar; clientflag: longword): PMYSQL; stdcall;

mysql_close:procedure(sock: PMYSQL); stdcall;

mysql_select_db:function(_mysql: PMYSQL; const db: pChar): longint; stdcall;

mysql_query:function(_mysql: PMYSQL; const q: pChar): longint; stdcall;

mysql_send_query:function(_mysql: PMYSQL; const q: pChar; length: longword): longint; stdcall;

mysql_read_query_result: function(_mysql: PMYSQL): longint; stdcall;

mysql_real_query:function(_mysql: PMYSQL; const q: pChar; length: longword): longint; stdcall;

mysql_create_db:function(_mysql: PMYSQL; const DB: pChar): longint; stdcall;

mysql_drop_db:function(_mysql: PMYSQL; const DB: pChar): longint; stdcall;

mysql_shutdown:function(_mysql: PMYSQL): longint; stdcall;

mysql_dump_debug_info:function(_mysql: PMYSQL): longint; stdcall;

mysql_refresh:function(_mysql: PMYSQL; refresh_options: longword): longint; stdcall;

mysql_kill:function(_mysql: PMYSQL; pid: longword): longint; stdcall;

mysql_ping:function(_mysql: PMYSQL): longint; stdcall;

mysql_stat:function(_mysql: PMYSQL): pChar; stdcall;

mysql_get_server_info:function(_mysql: PMYSQL): pChar; stdcall;

mysql_get_client_info:function: pChar; stdcall;

mysql_get_host_info:function(_mysql: PMYSQL): pChar; stdcall;

mysql_get_proto_info:function(_mysql: PMYSQL): longword; stdcall;

mysql_list_dbs:function(_mysql: PMYSQL; const wild: pChar): PMYSQL_RES; stdcall;

mysql_list_tables:function(_mysql: PMYSQL; const wild: pChar): PMYSQL_RES; stdcall;

mysql_list_fields:function(_mysql: PMYSQL; const table, wild: pChar): PMYSQL_RES; stdcall;

mysql_list_processes:function(_mysql: PMYSQL): PMYSQL_RES; stdcall;

mysql_store_result:function(_mysql: PMYSQL): PMYSQL_RES; stdcall;

mysql_use_result:function(_mysql: PMYSQL): PMYSQL_RES; stdcall;

mysql_options:function(_mysql: PMYSQL; option: mysql_option; const arg: pChar): longint; stdcall;

mysql_free_result: procedure(result: PMYSQL_RES); stdcall;

mysql_data_seek:procedure(result: PMYSQL_RES; offset: my_ulonglong); stdcall;

mysql_row_seek:function(result: PMYSQL_RES; offset: MYSQL_ROW_OFFSET): MYSQL_ROW_OFFSET; stdcall;

mysql_field_seek:function(result: PMYSQL_RES; offset: MYSQL_FIELD_OFFSET): MYSQL_FIELD_OFFSET; stdcall;

mysql_fetch_row:function(result: PMYSQL_RES): PMYSQL_ROW; stdcall;

mysql_fetch_lengths:function(result: PMYSQL_RES): PMYSQL_LENGTHS; stdcall;

mysql_fetch_field:function(result: PMYSQL_RES): PMYSQL_FIELD; stdcall;

mysql_escape_string: function(_to: pChar; const from: pChar; from_length: longword): longword; stdcall;

mysql_real_escape_string: function(_mysql: PMYSQL; _to: pChar; const from: pChar; length: longword): longword; stdcall;

mysql_debug:procedure(const debug: pChar); stdcall;

mysql_odbc_escape_string: function(_mysql: PMYSQL; _to: pChar; to_length: longword; const from: pChar; from_length: longword; param: pointer; extend_buffer: extend_buffer_func): pChar; stdcall;

myodbc_remove_escape:procedure(_mysql: PMYSQL; name: pChar); stdcall;

mysql_thread_safe:function: longword; stdcall;functionmysql_reload(_mysql: PMySQL): longint;//Status codes for libmySQL.dll

constLIBMYSQL_UNDEFINED= 0; //libmysql_load() has not yet been called

LIBMYSQL_MISSING = 1; //No suitable DLL could be located

LIBMYSQL_INCOMPATIBLE = 2; //A DLL was found but it is not compatible

LIBMYSQL_READY = 3; //The DLL was loaded successfully

varlibmysql_handle: HMODULE= 0;

libmysql_status: byte=LIBMYSQL_UNDEFINED;functionlibmysql_load(name: pChar): byte;procedure libmysql_free;//-----------------------------------------------------------------------------------------------

IMPLEMENTATION//-----------------------------------------------------------------------------------------------

functionIS_PRI_KEY(n: longword): boolean;beginResult := (n and PRI_KEY_FLAG) =PRI_KEY_FLAG;end;functionIS_NOT_NULL(n: longword): boolean;beginResult := (n and NOT_NULL_FLAG) =NOT_NULL_FLAG;end;functionIS_BLOB(n: longword): boolean;beginResult := (n and BLOB_FLAG) =BLOB_FLAG;end;functionIS_NUM(t: longword): boolean;beginResult := (t <= FIELD_TYPE_INT24) or (t =FIELD_TYPE_YEAR);end;functionIS_NUM_FIELD(f: PMYSQL_FIELD): boolean;beginResult := (f.flags and NUM_FLAG) =NUM_FLAG;end;functionINTERNAL_NUM_FIELD(f: PMYSQL_FIELD): boolean;beginResult := (((f._type <= FIELD_TYPE_INT24) and ((f._type <> FIELD_TYPE_TIMESTAMP) or (f.length = 14) or (f.length = 8))) or (f._type =FIELD_TYPE_YEAR));end;functionmysql_reload(_mysql: PMYSQL): longint;beginResult :=mysql_refresh(_mysql, REFRESH_GRANT);end;functionlibmysql_load(name: pChar): byte;procedure assign_proc(varproc: FARPROC; name: pChar);beginproc :=GetProcAddress(libmysql_handle, name);if proc = nil then libmysql_status :=LIBMYSQL_INCOMPATIBLE;end;beginlibmysql_free;if name = nil then name := 'libmysql.dll';

libmysql_handle :=LoadLibrary(name);if libmysql_handle = 0 then libmysql_status :=LIBMYSQL_MISSINGelse beginlibmysql_status :=LIBMYSQL_READY;

assign_proc(@mysql_num_rows,'mysql_num_rows');

assign_proc(@mysql_num_fields,'mysql_num_fields');

assign_proc(@mysql_eof,'mysql_eof');

assign_proc(@mysql_fetch_field_direct,'mysql_fetch_field_direct');

assign_proc(@mysql_fetch_fields,'mysql_fetch_fields');

assign_proc(@mysql_row_tell,'mysql_row_tell');

assign_proc(@mysql_field_tell,'mysql_field_tell');

assign_proc(@mysql_field_count,'mysql_field_count');

assign_proc(@mysql_affected_rows,'mysql_affected_rows');

assign_proc(@mysql_insert_id,'mysql_insert_id');

assign_proc(@mysql_errno,'mysql_errno');

assign_proc(@mysql_error,'mysql_error');

assign_proc(@mysql_info,'mysql_info');

assign_proc(@mysql_thread_id,'mysql_thread_id');

assign_proc(@mysql_character_set_name, 'mysql_character_set_name');

assign_proc(@mysql_init,'mysql_init');{$IFDEF HAVE_OPENSSL}assign_proc(@mysql_ssl_set, 'mysql_ssl_set');

assign_proc(@mysql_ssl_cipher,'mysql_ssl_cipher');

assign_proc(@mysql_ssl_clear,'mysql_ssl_clear');{$ENDIF} //HAVE_OPENSSL

assign_proc(@mysql_connect, 'mysql_connect');

assign_proc(@mysql_change_user,'mysql_change_user');

assign_proc(@mysql_real_connect,'mysql_real_connect');

assign_proc(@mysql_close,'mysql_close');

assign_proc(@mysql_select_db,'mysql_select_db');

assign_proc(@mysql_query,'mysql_query');

assign_proc(@mysql_send_query,'mysql_send_query');

assign_proc(@mysql_read_query_result, 'mysql_read_query_result');

assign_proc(@mysql_real_query,'mysql_real_query');

assign_proc(@mysql_create_db,'mysql_create_db');

assign_proc(@mysql_drop_db,'mysql_drop_db');

assign_proc(@mysql_shutdown,'mysql_shutdown');

assign_proc(@mysql_dump_debug_info,'mysql_dump_debug_info');

assign_proc(@mysql_refresh,'mysql_refresh');

assign_proc(@mysql_kill,'mysql_kill');

assign_proc(@mysql_ping,'mysql_ping');

assign_proc(@mysql_stat,'mysql_stat');

assign_proc(@mysql_get_server_info,'mysql_get_server_info');

assign_proc(@mysql_get_client_info,'mysql_get_client_info');

assign_proc(@mysql_get_host_info,'mysql_get_host_info');

assign_proc(@mysql_get_proto_info,'mysql_get_proto_info');

assign_proc(@mysql_list_dbs,'mysql_list_dbs');

assign_proc(@mysql_list_tables,'mysql_list_tables');

assign_proc(@mysql_list_fields,'mysql_list_fields');

assign_proc(@mysql_list_processes,'mysql_list_processes');

assign_proc(@mysql_store_result,'mysql_store_result');

assign_proc(@mysql_use_result,'mysql_use_result');

assign_proc(@mysql_options,'mysql_options');

assign_proc(@mysql_free_result, 'mysql_free_result');

assign_proc(@mysql_data_seek,'mysql_data_seek');

assign_proc(@mysql_row_seek,'mysql_row_seek');

assign_proc(@mysql_field_seek,'mysql_field_seek');

assign_proc(@mysql_fetch_row,'mysql_fetch_row');

assign_proc(@mysql_fetch_lengths,'mysql_fetch_lengths');

assign_proc(@mysql_fetch_field,'mysql_fetch_field');

assign_proc(@mysql_escape_string, 'mysql_escape_string');

assign_proc(@mysql_real_escape_string, 'mysql_real_escape_string');

assign_proc(@mysql_debug,'mysql_debug');

assign_proc(@mysql_odbc_escape_string, 'mysql_odbc_escape_string');

assign_proc(@myodbc_remove_escape,'myodbc_remove_escape');

assign_proc(@mysql_thread_safe,'mysql_thread_safe');end;

Result :=libmysql_status;end;procedure libmysql_free;begin

if libmysql_handle <> 0 thenFreeLibrary(libmysql_handle);

libmysql_handle := 0;

libmysql_status :=LIBMYSQL_UNDEFINED;end;//-----------------------------------------------------------------------------------------------

INITIALIZATION//-----------------------------------------------------------------------------------------------

begin

{$IFNDEF DONT_LOAD_DLL}libmysql_load(nil);{$ENDIF} //DONT_LOAD_DLL

end;//-----------------------------------------------------------------------------------------------

FINALIZATION//-----------------------------------------------------------------------------------------------

beginlibmysql_free;end;end.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值