unit Udmysql; (* This Unit was created by Reiner Sombrowsky (somby@lycosmail.com) You can uses it without warrenty. Please tell me if you have founded some errors. All corresponding record-types are beginning with T.. and all pointer to the records are beginning with P.. This DELPHI4/5 - unit supports the latest Version of libmysql.dll (Version 03.23.14) of MySQL. You can also use it for libmysql.dll- Version 03.22.xx, if you change the next DEFINE - statement as comment {.DEFINE VER0323XX} *) {$A+} {$DEFINE VER0323XX} interface uses windows,winsock; const MYSQL_ERRMSG_SIZE =200; CR_MIN_ERROR =2000; // For easier client code CR_MAX_ERROR =2999; CLIENT_ERRMAP =2; // Errormap used by my_error() CR_UNKNOWN_ERROR =2000; CR_SOCKET_CREATE_ERROR =2001; CR_CONNECTION_ERROR =2002; CR_CONN_HOST_ERROR =2003; CR_IPSOCK_ERROR =2004; CR_UNKNOWN_HOST =2005; CR_SERVER_GONE_ERROR =2006; CR_VERSION_ERROR =2007; CR_OUT_OF_MEMORY =2008; CR_WRONG_HOST_INFO =2009; CR_LOCALHOST_CONNECTION =2010; CR_TCP_CONNECTION =2011; CR_SERVER_HANDSHAKE_ERR =2012; CR_SERVER_LOST =2013; CR_COMMANDS_OUT_OF_SYNC =2014; CR_NAMEDPIPE_CONNECTION =2015; CR_NAMEDPIPEWAIT_ERROR =2016; CR_NAMEDPIPEOPEN_ERROR =2017; CR_NAMEDPIPESETSTATE_ERROR =2018; {$IFDEF VER0323XX} CR_CANT_READ_CHARSET =2019; {$ENDIF} ER_HASHCHK =1000; ER_NISAMCHK =1001; ER_NO =1002; ER_YES =1003; ER_CANT_CREATE_FILE =1004; ER_CANT_CREATE_TABLE =1005; ER_CANT_CREATE_DB =1006; ER_DB_CREATE_EXISTS =1007; ER_DB_DROP_EXISTS =1008; ER_DB_DROP_DELETE =1009; ER_DB_DROP_RMDIR =1010; ER_CANT_DELETE_FILE =1011; ER_CANT_FIND_SYSTEM_REC =1012; ER_CANT_GET_STAT =1013; ER_CANT_GET_WD =1014; ER_CANT_LOCK =1015; ER_CANT_OPEN_FILE =1016; ER_FILE_NOT_FOUND =1017; ER_CANT_READ_DIR =1018; ER_CANT_SET_WD =1019; ER_CHECKREAD =1020; ER_DISK_FULL =1021; ER_DUP_KEY =1022; ER_ERROR_ON_CLOSE =1023; ER_ERROR_ON_READ =1024; ER_ERROR_ON_RENAME =1025; ER_ERROR_ON_WRITE =1026; ER_FILE_USED =1027; ER_FILSORT_ABORT =1028; ER_FORM_NOT_FOUND =1029; ER_GET_ERRNO =1030; ER_ILLEGAL_HA =1031; ER_KEY_NOT_FOUND =1032; ER_NOT_FORM_FILE =1033; ER_NOT_KEYFILE =1034; ER_OLD_KEYFILE =1035; ER_OPEN_AS_READONLY =1036; ER_OUTOFMEMORY =1037; ER_OUT_OF_SORTMEMORY =1038; ER_UNEXPECTED_EOF =1039; ER_CON_COUNT_ERROR =1040; ER_OUT_OF_RESOURCES =1041; ER_BAD_HOST_ERROR =1042; ER_HANDSHAKE_ERROR =1043; ER_DBACCESS_DENIED_ERROR =1044; ER_ACCESS_DENIED_ERROR =1045; ER_NO_DB_ERROR =1046; ER_UNKNOWN_COM_ERROR =1047; ER_BAD_NULL_ERROR =1048; ER_BAD_DB_ERROR =1049; ER_TABLE_EXISTS_ERROR =1050; ER_BAD_TABLE_ERROR =1051; ER_NON_UNIQ_ERROR =1052; ER_SERVER_SHUTDOWN =1053; ER_BAD_FIELD_ERROR =1054; ER_WRONG_FIELD_WITH_GROUP =1055; ER_WRONG_GROUP_FIELD =1056; ER_WRONG_SUM_SELECT =1057; ER_WRONG_VALUE_COUNT =1058; ER_TOO_LONG_IDENT =1059; ER_DUP_FIELDNAME =1060; ER_DUP_KEYNAME =1061; ER_DUP_ENTRY =1062; ER_WRONG_FIELD_SPEC =1063; ER_PARSE_ERROR =1064; ER_EMPTY_QUERY =1065; ER_NONUNIQ_TABLE =1066; ER_INVALID_DEFAULT =1067; ER_MULTIPLE_PRI_KEY =1068; ER_TOO_MANY_KEYS =1069; ER_TOO_MANY_KEY_PARTS =1070; ER_TOO_LONG_KEY =1071; ER_KEY_COLUMN_DOES_NOT_EXITS =1072; ER_BLOB_USED_AS_KEY =1073; ER_TOO_BIG_FIELDLENGTH =1074; ER_WRONG_AUTO_KEY =1075; ER_READY =1076; ER_NORMAL_SHUTDOWN =1077; ER_GOT_SIGNAL =1078; ER_SHUTDOWN_COMPLETE =1079; ER_FORCING_CLOSE =1080; ER_IPSOCK_ERROR =1081; ER_NO_SUCH_INDEX =1082; ER_WRONG_FIELD_TERMINATORS =1083; ER_BLOBS_AND_NO_TERMINATED =1084; ER_TEXTFILE_NOT_READABLE =1085; ER_FILE_EXISTS_ERROR =1086; ER_LOAD_INFO =1087; ER_ALTER_INFO =1088; ER_WRONG_SUB_KEY =1089; ER_CANT_REMOVE_ALL_FIELDS =1090; ER_CANT_DROP_FIELD_OR_KEY =1091; ER_INSERT_INFO =1092; ER_INSERT_TABLE_USED =1093; ER_NO_SUCH_THREAD =1094; ER_KILL_DENIED_ERROR =1095; ER_NO_TABLES_USED =1096; ER_TOO_BIG_SET =1097; ER_NO_UNIQUE_LOGFILE =1098; ER_TABLE_NOT_LOCKED_FOR_WRITE =1099; ER_TABLE_NOT_LOCKED =1100; ER_BLOB_CANT_HAVE_DEFAULT =1101; ER_WRONG_DB_NAME =1102; ER_WRONG_TABLE_NAME =1103; ER_TOO_BIG_SELECT =1104; ER_UNKNOWN_ERROR =1105; ER_UNKNOWN_PROCEDURE =1106; ER_WRONG_PARAMCOUNT_TO_PROCEDURE =1107; ER_WRONG_PARAMETERS_TO_PROCEDURE =1108; ER_UNKNOWN_TABLE =1109; ER_FIELD_SPECIFIED_TWICE =1110; ER_INVALID_GROUP_FUNC_USE =1111; ER_UNSUPPORTED_EXTENSION =1112; ER_TABLE_MUST_HAVE_COLUMNS =1113; ER_RECORD_FILE_FULL =1114; ER_UNKNOWN_CHARACTER_SET =1115; ER_TOO_MANY_TABLES =1116; ER_TOO_MANY_FIELDS =1117; ER_TOO_BIG_ROWSIZE =1118; ER_STACK_OVERRUN =1119; ER_WRONG_OUTER_JOIN =1120; ER_NULL_COLUMN_IN_INDEX =1121; ER_CANT_FIND_UDF =1122; ER_CANT_INITIALIZE_UDF =1123; ER_UDF_NO_PATHS =1124; ER_UDF_EXISTS =1125; ER_CANT_OPEN_LIBRARY =1126; ER_CANT_FIND_DL_ENTRY =1127; ER_FUNCTION_NOT_DEFINED =1128; ER_HOST_IS_BLOCKED =1129; ER_HOST_NOT_PRIVILEGED =1130; ER_PASSWORD_ANONYMOUS_USER =1131; ER_PASSWORD_NOT_ALLOWED =1132; ER_PASSWORD_NO_MATCH =1133; ER_UPDATE_INFO =1134; ER_CANT_CREATE_THREAD =1135; ER_WRONG_VALUE_COUNT_ON_ROW =1136; ER_CANT_REOPEN_TABLE =1137; ER_INVALID_USE_OF_NULL =1138; ER_REGEXP_ERROR =1139; ER_MIX_OF_GROUP_FUNC_AND_FIELDS =1140; ER_NONEXISTING_GRANT =1141; ER_TABLEACCESS_DENIED_ERROR =1142; ER_COLUMNACCESS_DENIED_ERROR =1143; ER_ILLEGAL_GRANT_FOR_TABLE =1144; ER_GRANT_WRONG_HOST_OR_USER =1145; ER_NO_SUCH_TABLE =1146; ER_NONEXISTING_TABLE_GRANT =1147; ER_NOT_ALLOWED_COMMAND =1148; ER_SYNTAX_ERROR =1149; ER_DELAYED_CANT_CHANGE_LOCK =1150; ER_TOO_MANY_DELAYED_THREADS =1151; ER_ABORTING_CONNECTION =1152; ER_NET_PACKET_TOO_LARGE =1153; ER_NET_READ_ERROR_FROM_PIPE =1154; ER_NET_FCNTL_ERROR =1155; ER_NET_PACKETS_OUT_OF_ORDER =1156; ER_NET_UNCOMPRESS_ERROR =1157; ER_NET_READ_ERROR =1158; ER_NET_READ_INTERRUPTED =1159; ER_NET_ERROR_ON_WRITE =1160; ER_NET_WRITE_INTERRUPTED =1161; ER_TOO_LONG_STRING =1162; ER_TABLE_CANT_HANDLE_BLOB =1163; ER_TABLE_CANT_HANDLE_AUTO_INCREMENT=1164; ER_DELAYED_INSERT_TABLE_LOCKED =1165; ER_WRONG_COLUMN_NAME =1166; ER_WRONG_KEY_COLUMN =1167; ER_WRONG_MRG_TABLE =1168; ER_DUP_UNIQUE =1169; ER_BLOB_KEY_WITHOUT_LENGTH =1170; ER_PRIMARY_CANT_HAVE_NULL =1171; ER_TOO_MANY_ROWS =1172; ER_REQUIRES_PRIMARY_KEY =1173; ER_NO_RAID_COMPILED =1174; ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE=1175; ER_KEY_DOES_NOT_EXITS =1176; ER_CHECK_NO_SUCH_TABLE =1177; ER_CHECK_NOT_IMPLEMENTED =1178; {$IFDEF VER0323XX} ER_CANT_DO_THIS_DURING_AN_TRANSACTION =1179; ER_GOT_ERROR_DURING_COMMIT =1180; ER_GOT_ERROR_DURING_ROLLBACK =1181; ER_ERROR_MESSAGES =182; {$ELSE} ER_ERROR_MESSAGES =179; {$ENDIF} 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_FAST = 32768; // Intern flag FIELD_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; type TMY_BOOL= shortint; TMY_ULONGLONG=int64; TMYSQL_FIELD_OFFSET=longword; {$IFNDEF VER0323XX} TNET_TYPE=( NET_TYPE_TCPIP, NET_TYPE_SOCKET, NET_TYPE_NAMEDPIPE ); {$ENDIF} TMYSQL_STATUS =(MYSQL_STATUS_READY,MYSQL_STATUS_GET_RESULT, MYSQL_STATUS_USE_RESULT); TMYSQL_OPTION =(MYSQL_OPT_CONNECT_TIMEOUT, MYSQL_OPT_COMPRESS, MYSQL_OPT_NAMED_PIPE, MYSQL_INIT_COMMAND, MYSQL_READ_DEFAULT_FILE, MYSQL_READ_DEFAULT_GROUP {$IFDEF VER0323XX} ,MYSQL_SET_CHARSET_DIR, MYSQL_SET_CHARSET_NAME {$ENDIF} ); TMY_SOCKET=tsocket; TFIELD_TYPES =byte; PUSED_MEM=^TUSED_MEM; TUSED_MEM=record next:PUSED_MEM; left,size: longword; end; TERR_PROC=procedure;stdcall; PMEM_ROOT=^TMEM_ROOT; TMEM_ROOT=record free,used:PUSED_MEM; min_malloc,block_size: longword; error_handler:TERR_PROC; end; PMYSQL_FIELD=^TMYSQL_FIELD; TMYSQL_FIELD=record name, // Name of column table, //Table of column if column was a field def:pchar; // Default value (set by mysql_list_fields) typ: TFIELD_TYPES; // Type of field. Se mysql_com.h for types length, // Width of column max_length, // Max width of selected set flags, // Div flags decimals:longword; // Number of decimals in field end; PMYSQL_FIELDS=^TMYSQL_FIELDS; TMYSQL_FIELDS=array[0..0] of TMYSQL_FIELD; PMYSQL_ROW=^TMYSQL_ROW; TMYSQL_ROW= array[0..0] of pchar; PMYSQL_ROW_OFFSET=^TMYSQL_ROWS; PMYSQL_ROWS=^TMYSQL_ROWS; TMYSQL_ROWS = record next:PMYSQL_ROWS; // list of rows data:PMYSQL_ROW; end; PMYSQL_DATA=^TMYSQL_DATA; TMYSQL_DATA =record rows:TMY_ULONGLONG; fields:longword; data:PMYSQL_ROWS; alloc:TMEM_ROOT; end; TMYSQL_OPTIONS=record connect_timeout,client_flag:longword; compress,named_pipe:TMY_BOOL; port:longword; host,init_command,user,password,unix_socket,db, my_cnf_file,my_cnf_group:PCHAR; {$IFDEF VER0323XX} charset_dir,charset_name:PCHAR; use_ssl:TMY_BOOL; ssl_key,ssl_cert,ssl_ca,ssl_capath:PCHAR; {$ENDIF} end; {$IFDEF VER0323XX} PVIO=pointer; {$ENDIF} TNET=record {$IFNDEF VER0323XX} nettype:TNET_TYPE; hPipe:THANDLE; {$ELSE} vio:PVIO; {$ENDIF} fd: TMY_SOCKET; fcntl: integer; buff,buff_end,write_pos,read_pos: PCHAR; last_error:array[1..MYSQL_ERRMSG_SIZE] of char; last_errno,max_packet,timeout,pkt_nr: longword; error,return_errno,compress: TMY_BOOL; remain_in_buf,length,buf_length,where_b:longword; more:TMY_BOOL; save_char:char; end; {$IFDEF VER0323XX} TEXTEND_BUFFER_FUNC=function(p1:pointer;wto:pchar;length:longword):PCHAR;stdcall; TSTRCOLL_FUNC=function(const p1,p2:PCHAR):integer;stdcall; TSTRXFRM_FUNC=function(p1:PCHAR;const p2:PCHAR;p3:integer):integer;stdcall; TSTRNNCOLL_FUNC=function(const p1:PCHAR;p2:integer; const p3:PCHAR;p4:integer):integer;stdcall; TSTRNXFRM_FUNC=function(p1:PCHAR;const p2:PCHAR;p3,p4:integer):integer;stdcall; TLIKE_RANGE_FUNC=function(const p1:PCHAR;p2:longword;p3:PCHAR;p4:longword; p5,p6:PCHAR;var p7,p8:longword):TMY_BOOL;stdcall; TISMBCHAR_FUNC=function(const p1,p2:PCHAR):integer;stdcall; TISMBHEAD_FUNC=function(p1:longword):TMY_BOOL;stdcall; TMBCHARLEN_FUNC=function(p1:longword):integer;stdcall; PCHARSET_INFO=^TCHARSET_INFO; TCHARSET_INFO=record number:longword; name:PCHAR; ctype,to_lower,to_upper,sort_order:PCHAR; strxfrm_multiply:longword; strcoll:TSTRCOLL_FUNC; strxfrm:TSTRXFRM_FUNC; strnncoll:TSTRNNCOLL_FUNC; strnxfrm:TSTRNXFRM_FUNC; like_range:TLIKE_RANGE_FUNC; mbmaxlen:longword; ismbchar:TISMBCHAR_FUNC; ismbhead:TISMBHEAD_FUNC; mbcharlen:TMBCHARLEN_FUNC; end; {$ENDIF} PMYSQL=^TMYSQL; TMYSQL= record net: TNET; {$IFDEF VER0323XX} connector_fd:PCHAR; {$ENDIF} host,user,passwd,unix_socket,server_version,host_info,info,db: pchar; port,client_flag,server_capabilities, protocol_version,field_count: longword; thread_id:longword; affected_rows,insert_id,extra_info:TMY_ULONGLONG; packet_length:longword; status: TMYSQL_STATUS; fields: PMYSQL_FIELDS; field_alloc: TMEM_ROOT; free_me, reconnect: TMY_BOOL; options:TMYSQL_OPTIONS; {$IFDEF VER0323XX} scramble_buff:array[0..8] of char; charset:PCHARSET_INFO; {$ENDIF} end; PMYSQL_RES=^TMYSQL_RES; TMYSQL_RES =record row_count:TMY_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:^longword; // column lengths of current row handle:PMYSQL; // for unbuffered reads eof:TMY_BOOL; // Used my mysql_fetch_row end; function mysql_num_rows(res:PMYSQL_RES):TMY_ULONGLONG;stdcall; function mysql_num_fields(res:PMYSQL_RES):longword;stdcall; function mysql_eof(res:PMYSQL_RES):TMY_BOOL;stdcall; function mysql_fetch_field_direct(res:PMYSQL_RES; fieldnr:integer):PMYSQL_FIELD;stdcall; function mysql_fetch_fields(res:PMYSQL_RES):PMYSQL_FIELDS;stdcall; function mysql_row_tell(res:PMYSQL_RES):PMYSQL_ROWS;stdcall; function mysql_field_tell(res:PMYSQL_RES):longword;stdcall; function mysql_field_count(mysql:PMYSQL):longword;stdcall; function mysql_affected_rows(mysql:PMYSQL):TMY_ULONGLONG;stdcall; function mysql_insert_id(mysql:PMYSQL):TMY_ULONGLONG;stdcall; function mysql_error(mysql:PMYSQL):pchar;stdcall; function mysql_errno(mysql:PMYSQL):longword;stdcall; function mysql_info(mysql:PMYSQL):pchar;stdcall; {$IFNDEF VER0323XX} function mysql_reload(mysql:PMYSQL):integer;stdcall; {$ENDIF} function mysql_thread_id(mysql:PMYSQL):longword;stdcall; function mysql_init( mysql: PMYSQL):PMYSQL;stdcall; function mysql_connect( mysql: PMYSQL; const host,user,passwd:pchar):PMYSQL;stdcall; {$IFDEF VER0323XX} function mysql_change_user(mysql: PMYSQL; const user,passwd,db:pchar):TMY_BOOL;stdcall; {$ENDIF} function mysql_real_connect( mysql: PMYSQL; const host,user,passwd,db:pchar; port:longword; const unix_socket:pchar; clientflag:longword):PMYSQL;stdcall; procedure mysql_close(sock:PMYSQL);stdcall; function mysql_select_db(mysql:PMYSQL; const db:pchar):integer;stdcall; function mysql_query(mysql:PMYSQL; const q:pchar):integer;stdcall; function mysql_real_query(mysql:PMYSQL; const q:pchar;length:longword):integer;stdcall; function mysql_create_db(mysql:PMYSQL; const db:pchar):integer;stdcall; function mysql_drop_db(mysql:PMYSQL; const db:pchar):integer;stdcall; function mysql_shutdown(mysql:PMYSQL):integer;stdcall; function mysql_dump_debug_info(mysql:PMYSQL):integer;stdcall; function mysql_refresh(mysql:PMYSQL; refresh_options:longword):integer;stdcall; function mysql_kill(mysql:PMYSQL;pid:longword):integer;stdcall; function mysql_ping(mysql:PMYSQL):integer;stdcall; function mysql_stat(mysql:PMYSQL):pchar;stdcall; function mysql_get_server_info(mysql:PMYSQL):pchar;stdcall; function mysql_get_client_info:pchar;stdcall; function mysql_get_host_info(mysql:PMYSQL):pchar;stdcall; function mysql_get_proto_info(mysql:PMYSQL):longword;stdcall; function mysql_list_dbs(mysql:PMYSQL;const wild:pchar):PMYSQL_RES;stdcall; function mysql_list_tables(mysql:PMYSQL;const wild:pchar):PMYSQL_RES;stdcall; function mysql_list_fields(mysql:PMYSQL;const table,wild:pchar):PMYSQL_RES;stdcall; function mysql_list_processes(mysql:PMYSQL):PMYSQL_RES;stdcall; function mysql_store_result(mysql:PMYSQL):PMYSQL_RES;stdcall; function mysql_use_result(mysql:PMYSQL):PMYSQL_RES;stdcall; function mysql_options(mysql:PMYSQL;option:TMYSQL_OPTION; const arg:pchar):integer;stdcall; procedure mysql_free_result(res:PMYSQL_RES);stdcall; procedure mysql_data_seek(res:PMYSQL_RES;offset:TMY_ULONGLONG);stdcall; function mysql_row_seek(res:PMYSQL_RES; offset:PMYSQL_ROW_OFFSET):PMYSQL_ROW_OFFSET;stdcall; function mysql_field_seek(res:PMYSQL_RES; offset:TMYSQL_FIELD_OFFSET):TMYSQL_FIELD_OFFSET;stdcall; function mysql_fetch_row(res:PMYSQL_RES):PMYSQL_ROW;stdcall; function mysql_fetch_lengths(res:PMYSQL_RES):longword;stdcall; function mysql_fetch_field(res:PMYSQL_RES):PMYSQL_FIELD;stdcall; function mysql_escape_string(wto:pchar; const wfrom:pchar; wfromlength:longword):longword;stdcall; {$IFDEF VER0323XX} function mysql_real_escape_string(mysql:PMYSQL; wto:pchar; const wfrom:pchar; wfromlength:longword):longword;stdcall; {$ENDIF} procedure mysql_debug(const debug:pchar);stdcall; {$IFDEF VER0323XX} function mysql_odbc_escape_string(mysql:PMYSQL; wto:pchar; to_length:longword; const wfrom:pchar;from_length:longword; param:pointer; extend_buffer:TEXTEND_BUFFER_FUNC):PCHAR;stdcall; procedure myodbc_remove_escape(mysql:PMYSQL;name:PCHAR);stdcall; procedure mysql_thread_safe;stdcall; {$ENDIF} implementation const mysqllib='libmysql.dll'; {$IFNDEF VER0323XX} function mysql_num_rows(res:PMYSQL_RES):TMY_ULONGLONG;stdcall; begin result:=res^.row_count; end; function mysql_num_fields(res:PMYSQL_RES):longword;stdcall; begin result:=res^.field_count; end; function mysql_eof(res:PMYSQL_RES):TMY_BOOL;stdcall; begin result:=res^.eof; end; function mysql_fetch_field_direct(res:PMYSQL_RES; fieldnr:integer):PMYSQL_FIELD;stdcall; begin result:=@(res^.fields^[fieldnr]); end; function mysql_fetch_fields(res:PMYSQL_RES):PMYSQL_FIELDS;stdcall; begin result:=res^.fields; end; function mysql_row_tell(res:PMYSQL_RES):PMYSQL_ROWS;stdcall; begin result:=res^.data_cursor; end; function mysql_field_tell(res:PMYSQL_RES):longword;stdcall; begin result:=res^.current_field; end; function mysql_field_count(mysql:PMYSQL):longword;stdcall; begin result:=mysql^.field_count; end; function mysql_affected_rows(mysql:PMYSQL):TMY_ULONGLONG;stdcall; begin result:=mysql^.affected_rows; end; function mysql_insert_id(mysql:PMYSQL):TMY_ULONGLONG;stdcall; begin result:=mysql^.insert_id; end; function mysql_error(mysql:PMYSQL):pchar;stdcall; begin result:=@mysql^.net.last_error; end; function mysql_errno(mysql:PMYSQL):longword;stdcall; begin result:=mysql^.net.last_errno; end; function mysql_info(mysql:PMYSQL):pchar;stdcall; begin result:=mysql^.info; end; function mysql_reload(mysql:PMYSQL):integer;stdcall; begin result:=mysql_refresh(mysql,REFRESH_GRANT); end; function mysql_thread_id(mysql:PMYSQL):longword;stdcall; begin result:=mysql^.thread_id; end; {$ELSE} function mysql_num_rows(res:PMYSQL_RES):TMY_ULONGLONG;stdcall;external mysqllib; function mysql_num_fields(res:PMYSQL_RES):longword;stdcall;external mysqllib; function mysql_eof(res:PMYSQL_RES):TMY_BOOL;stdcall;external mysqllib; function mysql_fetch_field_direct(res:PMYSQL_RES; fieldnr:integer):PMYSQL_FIELD;stdcall;external mysqllib; function mysql_fetch_fields(res:PMYSQL_RES):PMYSQL_FIELDS;stdcall;external mysqllib; function mysql_row_tell(res:PMYSQL_RES):PMYSQL_ROWS;stdcall;external mysqllib; function mysql_field_tell(res:PMYSQL_RES):longword;stdcall;external mysqllib; function mysql_field_count(mysql:PMYSQL):longword;stdcall;external mysqllib; function mysql_affected_rows(mysql:PMYSQL):TMY_ULONGLONG;stdcall;external mysqllib; function mysql_insert_id(mysql:PMYSQL):TMY_ULONGLONG;stdcall;external mysqllib; function mysql_error(mysql:PMYSQL):pchar;stdcall;external mysqllib; function mysql_errno(mysql:PMYSQL):longword;stdcall;external mysqllib; function mysql_info(mysql:PMYSQL):pchar;stdcall;external mysqllib; function mysql_thread_id(mysql:PMYSQL):longword;stdcall;external mysqllib; {$ENDIF} function mysql_init( mysql: PMYSQL):PMYSQL;stdcall;external mysqllib; function mysql_connect( mysql: PMYSQL; const host,user,passwd:pchar):PMYSQL;stdcall;external mysqllib; {$IFDEF VER0323XX} function mysql_change_user(mysql: PMYSQL; const user,passwd, db:pchar):TMY_BOOL;stdcall;external mysqllib; {$ENDIF} function mysql_real_connect( mysql: PMYSQL; const host,user,passwd,db:pchar; port:longword; const unix_socket:pchar; clientflag:longword):PMYSQL;stdcall;external mysqllib; procedure mysql_close(sock:PMYSQL);stdcall;external mysqllib; function mysql_select_db(mysql:PMYSQL; const db:pchar):integer;stdcall;external mysqllib; function mysql_query(mysql:PMYSQL; const q:pchar):integer;stdcall;external mysqllib; function mysql_real_query(mysql:PMYSQL; const q:pchar;length:longword):integer;stdcall;external mysqllib; function mysql_create_db(mysql:PMYSQL; const db:pchar):integer;stdcall;external mysqllib; function mysql_drop_db(mysql:PMYSQL; const db:pchar):integer;stdcall;external mysqllib; function mysql_shutdown(mysql:PMYSQL):integer;stdcall;external mysqllib; function mysql_dump_debug_info(mysql:PMYSQL):integer;stdcall;external mysqllib; function mysql_refresh(mysql:PMYSQL; refresh_options:longword):integer;stdcall;external mysqllib; function mysql_kill(mysql:PMYSQL;pid:longword):integer;stdcall;external mysqllib; function mysql_ping(mysql:PMYSQL):integer;stdcall;external mysqllib; function mysql_stat(mysql:PMYSQL):pchar;stdcall;external mysqllib; function mysql_get_server_info(mysql:PMYSQL):pchar;stdcall;external mysqllib; function mysql_get_client_info:pchar;stdcall;external mysqllib; function mysql_get_host_info(mysql:PMYSQL):pchar;stdcall;external mysqllib; function mysql_get_proto_info(mysql:PMYSQL):longword;stdcall;external mysqllib; function mysql_list_dbs(mysql:PMYSQL;const wild:pchar):PMYSQL_RES;stdcall;external mysqllib; function mysql_list_tables(mysql:PMYSQL;const wild:pchar):PMYSQL_RES;stdcall;external mysqllib; function mysql_list_fields(mysql:PMYSQL;const table,wild:pchar):PMYSQL_RES;stdcall;external mysqllib; function mysql_list_processes(mysql:PMYSQL):PMYSQL_RES;stdcall;external mysqllib; function mysql_store_result(mysql:PMYSQL):PMYSQL_RES;stdcall;external mysqllib; function mysql_use_result(mysql:PMYSQL):PMYSQL_RES;stdcall;external mysqllib; function mysql_options(mysql:PMYSQL;option:TMYSQL_OPTION; const arg:pchar):integer;stdcall;external mysqllib; procedure mysql_free_result(res:PMYSQL_RES);stdcall;external mysqllib; procedure mysql_data_seek(res:PMYSQL_RES;offset:TMY_ULONGLONG);stdcall;external mysqllib; function mysql_row_seek(res:PMYSQL_RES; offset:PMYSQL_ROW_OFFSET):PMYSQL_ROW_OFFSET;stdcall;external mysqllib; function mysql_field_seek(res:PMYSQL_RES; offset:TMYSQL_FIELD_OFFSET):TMYSQL_FIELD_OFFSET;stdcall;external mysqllib; function mysql_fetch_row(res:PMYSQL_RES):PMYSQL_ROW;stdcall;external mysqllib; function mysql_fetch_lengths(res:PMYSQL_RES):longword;stdcall;external mysqllib; function mysql_fetch_field(res:PMYSQL_RES):PMYSQL_FIELD;stdcall;external mysqllib; function mysql_escape_string(wto:pchar; const wfrom:pchar; wfromlength:longword):longword;stdcall;external mysqllib; {$IFDEF VER0323XX} function mysql_real_escape_string(mysql:PMYSQL; wto:pchar; const wfrom:pchar; wfromlength:longword):longword;stdcall;external mysqllib; {$ENDIF} procedure mysql_debug(const debug:pchar);stdcall;external mysqllib; {$IFDEF VER0323XX} function mysql_odbc_escape_string(mysql:PMYSQL; wto:pchar; to_length:longword; const wfrom:pchar;from_length:longword; param:pointer; extend_buffer:TEXTEND_BUFFER_FUNC):PCHAR;stdcall;external mysqllib; procedure myodbc_remove_escape(mysql:PMYSQL;name:PCHAR);stdcall;external mysqllib; procedure mysql_thread_safe;stdcall;external mysqllib; {$ENDIF} end.