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

📄 mysqldrivers.pas

📁 MYSQL 连接控件 MYSQL 连接控件
💻 PAS
📖 第 1 页 / 共 4 页
字号:
//	Author:			Jacques Venter, jacques@scibit.com
//	Copyright:		1999,2000,2001,2002,2003,2004,2005 SciBit - Scientific Bitware (Pty) Ltd
//	Version:			2005.4.2.0
//	Comments:      All drivers for Mysql
//	History:
//                  2005.4.2.1 (2005-08-11)
//                     Use SafeLoadLibrary for typical MS compiled DLLs
//                  2005.4.2.0 (2005-05-23)
//                     Add mysql_info/QueryInfo to API for use by dataset
//                  2005.4.0.1 (2005-04-01)
//                     Update FormatIdentifiers to skip backtick if identifier includes "$" which is accepted as a valid character along with "_" and alphanumerics.
//                  2004.3.0.1 (2004-12-10)
//                     FormatIdentifiers even if we don't know the server version (i.e. when we are not currently connected)
//                  2004.3.0.0 (2004-08-10)
//                     Time for a new release, no use being selfish and keeping all these nice to haves from the customers :P
//						2002.2.0.2 (2004-06-17)
//							Add reserved words to all drivers, with IsReservedWord method
//						2002.2.0.1 (2004-05-19)
//							Remove conditional FormatIdentifier based on valid characters, all identifiers for >3.23.06 now ` delimited
//						2002.2.0.1 (2004-05-18)
//							Add read_timeout, write_timeout parameters
//						2002.2.0.0 (2004-04-05)
//							Add support for Direct Driver 1.1.4
//                     Add SSL Support
//                     Add support to completely exclude Embedded and Direct Driver from suite
//						2002.1.0.0
//							First release
//
//   Licensing
//
//       Copyright (c) 1998-2004 SciBit - Scientific Bitware (Pty) Ltd
//       ALL RIGHTS RESERVED
//
//  The entire contents of this file is protected by South African and
//  International Copyright Laws. Unauthorized reproduction,
//  reverse-engineering, and distribution of all or any portion of
//  the code contained in this file is strictly prohibited and may
//  result in severe civil and criminal penalties and will be
//  prosecuted to the maximum extent possible under the law.
//
//  RESTRICTIONS
//
//  THIS SOURCE CODE AND ALL RESULTING INTERMEDIATE FILES
//  (DCU, OBJ, DLL, ETC.) ARE CONFIDENTIAL AND PROPRIETARY TRADE
//  SECRETS OF SCIBIT (Pty) Ltd. THE REGISTERED DEVELOPER IS
//  LICENSED TO DISTRIBUTE THE SOURCECODE AND ALL
//  ACCOMPANYING VCL CONTROLS AS PART OF AN EXECUTABLE PROGRAM ONLY.
//
//  THE SOURCE CODE CONTAINED WITHIN THIS FILE AND ALL RELATED
//  FILES OR ANY PORTION OF ITS CONTENTS SHALL AT NO TIME BE
//  COPIED, TRANSFERRED, SOLD, DISTRIBUTED, OR OTHERWISE MADE
//  AVAILABLE TO OTHER INDIVIDUALS WITHOUT EXPRESS WRITTEN CONSENT
//  AND PERMISSION FROM SciBit - Scientific Bitware (Pty) Ltd
//
//  CONSULT THE END USER LICENSE AGREEMENT FOR INFORMATION ON
//  ADDITIONAL RESTRICTIONS.
//
//*******************************************************************
unit MySQLDrivers;

interface
{$I product.inc}
uses
  Sysutils, Classes,DB,
{$IFDEF MSWINDOWS}
  Windows;
{$ELSE}
  Libc;
{$ENDIF}

const
	NOT_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 thread cache
  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_PROTOCOL_41      = 512;	// Support the mysql_change_user()
	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
  CLIENT_RESERVED         = 16384; // New 4.1 protocol
  CLIENT_SECURE_CONNECTION= 32768; // New 4.1 authentication
  CLIENT_MULTI_QUERIES    = 65536; // Enable/disable multi query support
  CLIENT_MULTI_STATEMENTS = CLIENT_MULTI_QUERIES;
  CLIENT_MULTI_RESULTS    = 131072;

	SERVER_STATUS_IN_TRANS  = 1;	   // Transaction has started
	SERVER_STATUS_AUTOCOMMIT= 2;     // Server in auto_commit mode
  SERVER_STATUS_MORE_RESULTS=4;	   // More results on server
  SERVER_MORE_RESULTS_EXISTS=8;    // Multi query - next query exists

	MYSQL_ERRMSG_SIZE       = 200;
	NET_READ_TIMEOUT        = 30;    // Timeout on read
	NET_WRITE_TIMEOUT       = 60;    // Timeout on write
	NET_WAIT_TIMEOUT        = 28800; // Wait for new query

	MAX_BLOB_WIDTH          = 8192;	// Default width for blob

	packet_error: longword  = $ffffffff;

	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_VARCHAR      = 15;
  FIELD_TYPE_BIT          = 16;
	FIELD_TYPE_DEC          = 246;
	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;
  FIELD_TYPE_GEOMETRY     = 255;

	FIELD_TYPE_CHAR         = FIELD_TYPE_TINY;      // For compability
	FIELD_TYPE_INTERVAL     = FIELD_TYPE_ENUM;  // For compability

	MYSQL_PORT              = 3306;

	MAX_MYSQL_MANAGER_ERR   = 256;
  MAX_MYSQL_MANAGER_MSG   = 256;
  MANAGER_OK              = 200;
  MANAGER_INFO            = 250;
  MANAGER_ACCESS          = 401;
  MANAGER_CLIENT_ERR      = 450;
  MANAGER_INTERNAL_ERR    = 500;
  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;
  CR_CANT_READ_CHARSET	   = 2019;
  CR_NET_PACKET_TOO_LARGE = 2020;
  CR_EMBEDDED_CONNECTION	= 2021;
  CR_PROBE_SLAVE_STATUS   = 2022;
  CR_PROBE_SLAVE_HOSTS    = 2023;
  CR_PROBE_SLAVE_CONNECT  = 2024;
  CR_PROBE_MASTER_CONNECT = 2025;
  CR_SSL_CONNECTION_ERROR = 2026;
  CR_MALFORMED_PACKET     = 2027;
  CR_WRONG_LICENSE	      = 2028;
  CR_NULL_POINTER		   = 2029;  CR_NO_PREPARE_STMT	   = 2030;  CR_PARAMS_NOT_BOUND	   = 2031;  CR_DATA_TRUNCATED	      = 2032;  CR_NO_PARAMETERS_EXISTS = 2033;  CR_INVALID_PARAMETER_NO = 2034;  CR_INVALID_BUFFER_USE	= 2035;  CR_UNSUPPORTED_PARAM_TYPE = 2036;  CR_SHARED_MEMORY_CONNECTION             = 2037;  CR_SHARED_MEMORY_CONNECT_REQUEST_ERROR  = 2038;  CR_SHARED_MEMORY_CONNECT_ANSWER_ERROR   = 2039;  CR_SHARED_MEMORY_CONNECT_FILE_MAP_ERROR = 2040;  CR_SHARED_MEMORY_CONNECT_MAP_ERROR      = 2041;  CR_SHARED_MEMORY_FILE_MAP_ERROR         = 2042;  CR_SHARED_MEMORY_MAP_ERROR              = 2043;  CR_SHARED_MEMORY_EVENT_ERROR     	= 2044;  CR_SHARED_MEMORY_CONNECT_ABANDONED_ERROR = 2045;  CR_SHARED_MEMORY_CONNECT_SET_ERROR      = 2046;  CR_CONN_UNKNOW_PROTOCOL 		= 2047;  CR_INVALID_CONN_HANDLE			= 2048;  CR_SECURE_AUTH                          = 2049;  CR_FETCH_CANCELED                       = 2050;  CR_NO_DATA                              = 2051;  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;

⌨️ 快捷键说明

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