📄 mysqldrivers.pas
字号:
// 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 + -