mirror of
https://github.com/HeidiSQL/HeidiSQL.git
synced 2025-08-26 03:01:07 +08:00
Again, move code for loading libmysql.dll - the right place is now the connection object itself, which loads the library on demand, in SetActive(). This enables the application to start independently of an existent library, raising an error when pressing the connect button. Also, this is a first step towards multi-dbms.
This commit is contained in:
@ -7,10 +7,97 @@ unit mysql_structures;
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, Graphics, Windows, SysUtils, mysql_api;
|
||||
Classes, Graphics, Windows, SysUtils;
|
||||
|
||||
{$I const.inc}
|
||||
|
||||
const
|
||||
|
||||
// General declarations
|
||||
MYSQL_ERRMSG_SIZE = 512;
|
||||
SQLSTATE_LENGTH = 5;
|
||||
SCRAMBLE_LENGTH = 20;
|
||||
MYSQL_PORT = 3306;
|
||||
LOCAL_HOST = 'localhost';
|
||||
NAME_LEN = 64;
|
||||
PROTOCOL_VERSION = 10;
|
||||
FRM_VER = 6;
|
||||
|
||||
// Field's flags
|
||||
NOT_NULL_FLAG = 1;
|
||||
PRI_KEY_FLAG = 2;
|
||||
UNIQUE_KEY_FLAG = 4;
|
||||
MULTIPLE_KEY_FLAG = 8;
|
||||
BLOB_FLAG = 16;
|
||||
UNSIGNED_FLAG = 32;
|
||||
ZEROFILL_FLAG = 64;
|
||||
BINARY_FLAG = 128;
|
||||
ENUM_FLAG = 256;
|
||||
AUTO_INCREMENT_FLAG = 512;
|
||||
TIMESTAMP_FLAG = 1024;
|
||||
SET_FLAG = 2048;
|
||||
NUM_FLAG = 32768;
|
||||
PART_KEY_FLAG = 16384;
|
||||
GROUP_FLAG = 32768;
|
||||
UNIQUE_FLAG = 65536;
|
||||
BINCMP_FLAG = 131072;
|
||||
|
||||
// Client connection options
|
||||
CLIENT_LONG_PASSWORD = 1;
|
||||
CLIENT_FOUND_ROWS = 2; // Found instead of affected rows
|
||||
CLIENT_LONG_FLAG = 4;
|
||||
CLIENT_CONNECT_WITH_DB = 8;
|
||||
CLIENT_NO_SCHEMA = 16; // Don't allow database.table.column
|
||||
CLIENT_COMPRESS = 32;
|
||||
CLIENT_ODBC = 64;
|
||||
CLIENT_LOCAL_FILES = 128;
|
||||
CLIENT_IGNORE_SPACE = 256; // Ignore spaces before '('
|
||||
CLIENT_PROTOCOL_41 = 512;
|
||||
CLIENT_INTERACTIVE = 1024;
|
||||
CLIENT_SSL = 2048; // Switch to SSL after handshake
|
||||
CLIENT_IGNORE_SIGPIPE = 4096;
|
||||
CLIENT_TRANSACTIONS = 8192;
|
||||
CLIENT_RESERVED = 16384;
|
||||
CLIENT_SECURE_CONNECTION = 32768;
|
||||
CLIENT_MULTI_STATEMENTS = 65536;
|
||||
CLIENT_MULTI_RESULTS = 131072;
|
||||
CLIENT_SSL_VERIFY_SERVER_CERT = 67108864;
|
||||
CLIENT_REMEMBER_OPTIONS = 134217728;
|
||||
|
||||
// Enum Field Types
|
||||
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_NEWDECIMAL = 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;
|
||||
|
||||
COLLATION_BINARY = 63;
|
||||
// Equivalent to COLLATION_BINARY, this is what a new driver returns when connected to a pre-4.1 server.
|
||||
COLLATION_NONE = 0;
|
||||
|
||||
|
||||
type
|
||||
// MySQL data types
|
||||
TDatatypeIndex = (dtTinyint, dtSmallint, dtMediumint, dtInt, dtBigint,
|
||||
@ -28,7 +115,7 @@ type
|
||||
// MySQL data type structure
|
||||
TDatatype = record
|
||||
Index: TDatatypeIndex;
|
||||
NativeType: Cardinal; // See field types in mysql_api.pas
|
||||
NativeType: Cardinal; // See field types
|
||||
Name: String;
|
||||
Description: String;
|
||||
HasLength: Boolean; // Can have Length- or Set-attribute?
|
||||
|
Reference in New Issue
Block a user