6.6 Модуль MySQLServer
Этот модуль включает объект TMySQLServer, полученный из стандартного класса
Delphi 5 TCustomConnection.
Компонент: TMySQLServer
Типы: TMySQLServerLoginEvent
Подпрограммы: MYSQLError
Описание
TMySQLServer представляет собой основной компонент в наборе TMySQLComponent.
TMySQLServer используется, чтобы обработать фактические подключения к серверу
MySQL, используя стандартные функции из libmysql.dll. Большую часть времени Вы
будете использовать только один компонент сервера, зато много компонентов
TMySQLDatasets.
Важно обратить внимание на то, что есть только одно физическое подключение к
серверу MySQL. Все наборы данных, приложенные к этому TMySQLServer, используют
это подключение или породят собственные подключения, использующие те же самые
параметры настройки TMySQLServer.
Помимо этих функций, этот компонент имеет много полезных свойств и функций,
чтобы создавать, удалять, использовать базы данных, получать информацию о
версии, собирать списки баз данных, таблиц, полей и т. д.
Свойства
AfterConnect!AL("AfterConnect_Property")
AfterDisconnect!AL("AfterDisconnect_Property")
BeforeConnect!AL("BeforeConnect_Property")
BeforeDisconnect!AL("BeforeDisconnect_Property")
Build
ClientVersion
Compression
Connected!AL("Connected_Property")
DatabaseName
Host
IdleTimer
Info
IntVer
LoginPrompt
Major
Minor
Params
Password
Port
Protocol
ServerVersion
UserName
Методы
Create!AL("Create_Method")
Destroy!AL("Destroy_Method")
AllocConnection
ExecSQL
FormatIdentifier
FormatIdentifiers
SelectDatabase
Server
CreateDatabase
DropDatabase
FreeConnection
GetDatabaseNames
GetFieldNames
GetTableNames
RegisterClient!AL("RegisterClient_Method")
Reload
SendEvent
UnRegisterClient!AL("UnRegisterClient_Method")
События
Key events
OnIdleTimer
OnLogin
Цель
Обеспечить все приложенные наборы данных физическими подключениями к серверу
MySQL, используя стандартную библиотеку libmysql.dll. Это основной компонент в
наборе TMySQLComponent.
Свойство Build
Применимо к TMySQLServer
Определение
property Build : word;
Описание
Сервер формирует версию как слово, например, 32
Read-only
Свойство ClientVersion
Применимо к TMySQLServer
Определение
property ClientVersion : string;
Описание
Используемая версия клиентской разделяемой библиотеки libmysql.dll.
Read-only
Свойство Compression
Применимо к TMySQLServer
Определение
property Compression : boolean;
Описание
Определяет протокол сжатия, используемый при связи с сервером MySQL.
Свойство DatabaseName
Применимо к TMySQLServer
Определение
property DatabaseName : string;
Описание
Получает или определяет текущую (актуальную) базу данных для этого
подключения.
Свойство Host
Применимо к TMySQLServer
Определение
property Host : string;
Описание
Получает или определяет имя хоста, используемое при создании новых
подключений.
Свойство IdleTimer
Применимо к TMySQLServer
Определение
property IdleTimer : longword;
Описание
Получает или определяет актуальное время неактивности (тайм-аут), позволенное
для этого подключения. Подключение автоматически будет пересоздано после того,
как это время закончится, а связь еще нужна.
Свойство Info
Применимо к TMySQLServer
Определение
property Info : string;
Описание
Более подробная информация о сервере.
Read-only
Свойство IntVer
Применимо к TMySQLServer
Определение
property IntVer : longword;
Описание
Версия сервера как слово, например, 32306.
Read-only
Свойство LoginPrompt
Применимо к TMySQLServer
Определение
property LoginPrompt;
Описание
Если установлено в True, это учитывает настроенный диалог подсказки MySQL
входа в систему, который будет появляться каждый раз, когда устанавливается
связь с этим сервером.
Свойство Major
Применимо к TMySQLServer
Определение
property Major : word;
Описание
Старшая часть версии сервера как слово, например, 3
Read-only
Свойство Minor
Применимо к TMySQLServer
Определение
property Minor : word;
Описание
Младшая часть версии сервера как слово, например, 22
Read-only
Свойство Params
Применимо к TMySQLServer
Определение
property Params : TStrings;
Описание
Стандартные параметры, используемые для сервера событием OnLogin. Могут быть
изменены во время выполнения.
Свойство Password
Применимо к TMySQLServer
Определение
property Password : string;
Описание
Получает или определяет текущий пароль, используемый при создании нового
подключения.
Свойство Port
Применимо к TMySQLServer
Определение
property Port : word;
Описание
Получает или определяет текущий порт, используемый при связи с сервером.
Свойство Protocol
Применимо к TMySQLServer
Определение
property Protocol : string;
Описание
Используемый протокол связи: TCP/IP, Pipes и т.д.
Read-only
Свойство ServerVersion
Применимо к TMySQLServer
Определение
property ServerVersion : string;
Описание
Версия сервера MySQL в виде строки.
Read-only
Свойство UserName
Применимо к TMySQLServer
Определение
property UserName : string;
Описание
Получает или определяет текущее имя пользователя, используемое при создании
нового подключения.
Метод AllocConnection
Применим к TMySQLServer
Определение
function AllocConnection : PMYSQL;
Описание
Распределяет новое подключение для TMySQLServer и TMySQLDatasets, используя
текущие параметры настройки Username, Password, Port и прочие.
Это внутренне используемый метод, обычно он используется только порожденными
классами TMySQLServer.
Метод ExecSQL
Применим к TMySQLServer
Определение
function ExecSQL(SQL : string) : boolean;
Описание
Используя подключение, выполнит любую инструкцию SQL на сервере.
Метод FormatIdentifier
Применим к TMySQLServer
Определение
function FormatIdentifier(Value : string) : string;
Описание
Форматирует идентификатор Value, используя информацию о версии сервера.
Например, "Table 1" превратится в "`Table 1`".
Метод FormatIdentifiers
Применим к TMySQLServer
Определение
function FormatIdentifiers(const Value : string) : string;
Описание
Форматирует идентификаторы, полученные в строке Value, используя информацию о
версии сервера. Например, "Table 1#10#13Table2#10#13Table 3" превратится в
"`Table 1`,Table 2,`Table 3`".
Метод SelectDatabase
Применим к TMySQLServer
Определение
function SelectDatabase(Conn : PMYSQL; DB : string) : boolean;
Описание
Для данного подключения выбирает текущую (актуальную) базу данных, то есть
действует аналогично команде "USE Database;". Это внутренне используемый
метод. Обычно он применяется только классами, порожденными от TMySQLServer.
Метод Server
Применим к TMySQLServer
Определение
function Server : PMYSQL;
Описание
Представляет собой указатель на текущее потоковое подключение к серверу. Это
может использоваться со всеми стандартными функциями mysql_, найденными в
библиотеке libmysql.dll. Это внутренне используемый метод. Обычно он применяется
только классами, порожденными от TMySQLServer.
Метод CreateDatabase
Применим к TMySQLServer
Определение
procedure CreateDatabase(Value : string);
Описание
При использовании подключения к серверу создает новую базу данных, то есть
работает аналогично инструкции "CREATE Database;".
Метод DropDatabase
Применим к TMySQLServer
Определение
procedure DropDatabase(Value : string);
Описание
При использовании текущего подключения к серверу удаляет указанную базу
данных, то есть работает аналогично инструкции "DROP Database;".
Метод FreeConnection
Применим к TMySQLServer
Определение
procedure FreeConnection(var Value : PMYSQL);
Описание
Освобождает активное подключение.
Метод GetDatabaseNames
Применим к TMySQLServer
Определение
procedure GetDatabaseNames(List : TStrings);
Описание
Заполняет список со всеми именами баз данных, найденными на сервере.
Замечание: в этом списке не будут перечислены те базы данных, на которых Вы не
имеете никаких привилегий.
Метод GetFieldNames
Применим к TMySQLServer
Определение
procedure GetFieldNames(const DatabaseName, TableName : string;
List : TStrings);
Описание
Заполняет cписок всеми именами полей для таблицы TableName из базы данных
DatabaseName с сервера.
Метод GetTableNames
Применим к TMySQLServer
Определение
procedure GetTableNames(const DatabaseName : string; List : TStrings);
Описание
Заполняет cписок всеми именами таблиц из базы данных DatabaseName.
Метод Reload
Применим к TMySQLServer
Определение
procedure Reload;
Описание
Перезагружает права доступа на сервере, то есть работает как команда
"RELOAD;"
Метод SendEvent
Применим к TMySQLServer
Определение
procedure SendEvent(Connecting : Boolean);
Описание
Используется, чтобы разъединить все наборы данных, если сервер завершается.
Это внутренне используемый метод. Обычно он применяется только классами,
порожденными от TMySQLServer.
Событие OnIdleTimer
Применимо к TMySQLServer
Определение
property OnIdleTimer : TNotifyEvent;
Описание
Это событие происходит, когда заканчивается время ожидания подключения.
Событие OnLogin
Применимо к TMySQLServer
Определение
property OnLogin : TMySQLServerLoginEvent;
Описание
Это событие происходит прежде, чем подключение будет сделано, чтобы позволить
Вам изменять свойства Params.
Тип TMySQLServerLoginEvent
Модуль MySQLServer
Определение
type
TMySQLServerLoginEvent = procedure(Server : TMySQLServer;
LoginParams : TStrings); of object;
Описание
Это событие происходит до установки связи с сервером MySQL. Список строк
LoginParams в настоящее время поддерживает только два ключевых слова в форме:
USERNAME=root, PASSWORD=.
Процедура MYSQLError
Модуль MySQLServer
Определение
procedure MYSQLError(MySQLHandle : PMySQL=nil; ErrNo : integer=-1;
Msg : string=''; IntVer : longword=32100);
Описание
Универсальная функция создания исключительной ситуации, предоставляет
зависящую от версии информацию относительно последней ошибки MySQL.
6.7 Модуль MySQLDataset
Этот модуль содержит все классы необходимые, чтобы поддерживать основной
класс TMySQLDataset.
Компонент: TMySQLDataset.
Типы: TMySQLEvent, TMySQLLocateOptions.
Константы: DefaultMacroChar='|', DefaultTermChar=';'.
TMySQLDataset
Модуль: MySQLDataset.
Описание
Это основной класс, используемый в Вашей прикладной программе. Он был назван
именно Dataset, а не Query или Table потому, что он может легко использоваться
как стандартный TTable или TQuery. Поскольку этот класс связывается и работает с
сервером MySQL, он делает доступными для использования все инструкции SQL. По
умолчанию используется концепция макросов (Macros) в командах SQL. Эти
макрокоманды очень легко могут быть заблокированы или удалены из значения по
умолчанию SQL.
Кроме того, являясь прямым поточным подключением к серверу MySQL, класс был
получен непосредственно из TDataset и таким образом поддержан всеми компонентами
для работы с базами данных, включая TDatasource. Этот компонент имеет все
стандартные свойства и методы.
Из-за отсутствия поддержки курсоров на стороне сервера в MySQL, этот
компонент полагается на хорошо разработанные таблицы по умолчанию, то есть Ваши
таблицы должны по крайней мере иметь первичный ключ. Если Вы отменяете заданные
по умолчанию инструкции SQL, Вы можете сами определять, когда, что и над чем
будет выполнено.
Компонент TMySQLDataset
Свойства
Active!AL("Active_Property")
AffectedRows
AfterCancel!AL("AfterCancel_Property")
AfterClose!AL("AfterClose_Property")
AfterDelete!AL("AfterDelete_Property")
AfterEdit!AL("AfterEdit_Property")
AfterInsert!AL("AfterInsert_Property")
AfterOpen!AL("AfterOpen_Property")
AfterPost!AL("AfterPost_Property")
AfterRefresh!AL("AfterRefresh_Property")
AfterScroll!AL("AfterScroll_Property")
BeforeCancel!AL("BeforeCancel_Property")
BeforeClose!AL("BeforeClose_Property")
BeforeDelete!AL("BeforeDelete_Property")
BeforeEdit!AL("BeforeEdit_Property")
BeforeInsert!AL("BeforeInsert_Property")
BeforeOpen!AL("BeforeOpen_Property")
BeforePost!AL("BeforePost_Property")
BeforeRefresh!AL("BeforeRefresh_Property")
BeforeScroll!AL("BeforeScroll_Property")
AllFieldValues
CachedUpdates
DatabaseName
FieldName
Filter
Filtered
MacroChar
MacroCount
Macros
MacrosEnabled
MasterFields
MasterSource
MultiKeyFields
MySQLFields
MySQLRecords
MySQLTables
PrimaryKeyFields
ReadOnly
RealSQL
Records
Server
ShareConnection
SQL
SQLBatch
SQLDelete
SQLInsert
SQLUpdate
TableName
UniqueKeyFields
Методы
Create!AL("Create_Method")
Destroy!AL("Destroy_Method")
BookmarkValid!AL("BookmarkValid_Method")
CompareBookmarks!AL("CompareBookmarks_Method")
CreateBlobStream!AL("CreateBlobStream_Method")
EscapeStr
ExecBatch
ExecSQL
ExecSQLBatch
GetFieldData!AL("GetFieldData_Method")
GetMacroValue
HexStr
Locate!AL("Locate_Method")
LocateRecord
LocateRecordOption
Lookup!AL("Lookup_Method")
MacroByName
ParseSQL
QuoteStr
ClearMacros
ConnectEvent
События
OnCalcFields!AL("OnCalcFields_Event")
OnDeleteError!AL("OnDeleteError_Event")
OnEditError!AL("OnEditError_Event")
OnExecSQL
OnNewRecord!AL("OnNewRecord_Event")
OnPostError!AL("OnPostError_Event")
Свойство AffectedRows
Применимо к TMySQLDataset
Определение
property AffectedRows : string;
Описание
Число строк, на которые воздействует последняя инструкция SQL, которая будет
выполнена. Только для Run-time. Read-only.
Свойство CachedUpdates
Применимо к TMySQLDataset
Определение
property CachedUpdates : boolean;
Описание
Установка этого свойства в True заставит все инструкции SQL, SQLUpdate,
SQLInsert, SQLDelete и SQLBatch кэшироваться на локальной системе и реально
выполняться только тогда, когда методы Close или Refresh в очередной раз
обращаются к этому набору данных.
Свойство DatabaseName
Применимо к TMySQLDataset
Определение
property DatabaseName : string;
Описание
В настоящее время выбранная база данных, устанавливая это свойство вызовет
"USE Database" на активной поточной связи этого набора данных с сервером MySQL.
Это значение заменит все макросы $DATABASENAME в Ваших запросах SQL.
Свойство FieldName
Применимо к TMySQLDataset
Определение
property FieldName : string;
Описание
В настоящее время выбранное имя поля (возможно, нескольких полей). Это может
содержать список полей, разделенных запятыми, и необязательный первичный ключ
для текущей (актуальной) таблицы. Это заменит все макросы $FIELDNAME в Ваших
запросах SQL.
Свойство AllFieldValues
Применимо к TMySQLDataset
Определение
property AllFieldValues : boolean;
Описание
Установите это свойство в True, если Вы хотите, чтобы набор данных
использовал "show columns from table", чтобы получить расширенную информацию
относительно каждого поля, например, значения по умолчанию, перечни допустимых
значений для полей типов ENUM и SET и так далее.
Свойство MacroChar
Применимо к TMySQLDataset
Определение
property MacroChar : Char;
Описание
Текущий (актуальный) символ, используемый для определенных макрокоманд в
Ваших инструкциях SQL.
Свойство Filter
Применимо к MySQLDataset
Определение
property Filter : string;
Описание
Установите это свойство к любому имеющему силу определению MySQL WHERE,
например, AccountName like "J%". Это значение будет автоматически включено в
макрокоманду $WHERE, если Filtered установлено в значение True.
Свойство MacroCount
Применимо к TMySQLDataset
Определение
property MacroCount : Word;
Описание
Число существующих макрокоманд. Только Run-time. Read-only.
Свойство Filtered
Применимо к TMySQLDataset
Определение
property Filtered : boolean;
Описание
Установите это свойство в True, если Вы хотите, чтобы текущий (актуальный)
Filter применялся со следующей командой Open к набору данных.
Свойство MasterFields
Применимо к TMySQLDataset
Определение
property MasterFields : string;
Описание
Установите это свойство к любой имеющей силу комбинации Name=Value так, чтобы
получилась пара DetailField=MasterField, например,
MasterFields:='AccountID=AccountID,AccountName=FirstName', или используйте
компоновку, чтобы связать Ваш набор данных с полями MasterSource.
AccountID и AccountName берутся из текущего детального набора данных, а
AccountID и Firstname берутся из главного набора данных, определенного свойством
MasterSource.
Поля, определенные свойством MasterFields, автоматически анализируются и
будут вставлены в предложение $WHERE, набор данных будет закрыт и вновь открыт,
уже используя новую инструкцию SQL, которая отразит изменения в наборе данных
MasterSource.
Свойство Macros
Применимо к TMySQLDataset
Определение
property Macros : TMySQLMacros;
Описание
TParams представляет собой совокупность макрокоманд, найденных в инструкциях
SQL.
Свойство MasterSource
Применимо к TMySQLDataset
Определение
property MasterSource : string;
Описание
Установите это свойство к любому имеющему силу доступному источнику данных.
Если это свойство установлено, оно автоматически модифицирует подробный набор
данных для макроса $WHERE, когда происходят изменения в наборе данных.
Свойство MacrosEnabled
Применимо к TMySQLDataset
Определение
property MacrosEnabled : boolean;
Описание
Если установлено в True, допускает использование макрокоманд в Ваших
инструкциях SQL.
Свойство MultiKeyFields
Применимо к TMySQLDataset
Определение
property MultiKeyFields : string;
Описание
Список строк всех полей, которые являются частью ключа, доступного в текущем
(актуальном) наборе результатов. Только Run-time. Read-only.
Свойство MySQLFields
Применимо к TMySQLDataset
Определение
property MySQLFields : TStringList;
Описание
Список строк всех полей, используемых в текущем наборе результатов. Только
Run-time. Read-only.
Свойство MySQLRecords
Применимо к TMySQLDataset
Определение
property MySQLRecords : TList;
Описание
Необработанные записи из текущего (актуального) набора результатов. Только
Run-time. Read-only.
Свойство MySQLTables
Применимо к TMySQLDataset
Определение
property MySQLTables : TStringList;
Описание
Список всех таблиц, используемых в текущем наборе результатов. Только
Run-time. Read-only.
Свойство PrimaryKeyFields
Применимо к TMySQLDataset
Определение
property PrimaryKeyFields : string;
Описание
Строковый список всех полей первичных ключей, доступных в текущем наборе
результатов. Только Run-time. Read-only.
Свойство ReadOnly
Применимо к TMySQLDataset
Определение
property ReadOnly : boolean;
Описание
Изменение этого свойства включит или отключит редактирование текущего наборе
результатов.
Свойство RealSQL
Применимо к TMySQLDataset
Определение
property RealSQL : string;
Описание
Последняя полная инструкция SQL, которая будет послана серверу MySQL. Только
Run-time. Read-only.
Свойство Records
Применимо к TMySQLDataset
Определение
property Records[Index : Integer] : PRecInfo;
Описание
Необработанные записи текущего набора результатов. Только Run-time.
Read-only.
Свойство Server
Применимо к MySQLDataset
Определение
property Server : TMySQLServer;
Описание
TMySQLServer, используемый этим набором данных.
Свойство ShareConnection
Применимо к TMySQLDataset
Определение
property ShareConnection : boolean;
Описание
Если True, этот набор данных совместно использует поточное подключение,
обеспеченное TMySQLServer с TMySQLServer.
Обратите внимание: Соблюдайте осторожность при использовании этого, так как
каждый набор данных может использовать любую базу данных, но разделяемое
подключение может использовать в один момент времени только единственную базу
данных. Если выставить значение в False, этот набор данных будет иметь
собственное поточное подключение к серверу MySQL, организованное TMySQLServer.
Все операции будут локальными и не смогут влиять на другой экземпляр
TMySQLDataset или TMySQLServer.
Свойство SQL
Применимо к TMySQLDataset
Определение
property SQL : TStrings;
Описание
Тип SELECT SQL-запроса. Эти инструкции будут выполнены, каждый раз, когда Вы
выполняете операцию Open или Active на наборе данных. Этот набор строк может
содержать несколько инструкций, разделеных точкой с запятой (;). Последняя
инструкция должна будет произвести набор результатов.
Свойство SQLBatch
Применимо к TMySQLDataset
Определение
property SQLBatch : TStrings;
Описание
Общая команда SQL. Эти инструкции будут выполнены каждый раз, когда Вы
выполняете ExecBatch на наборе данных. Этот список строк может содержать
несколько инструкций, разделеных точкой с запятой (;).
Свойство SQLDelete
Применимо к TMySQLDataset
Определение
property SQLDelete : TStrings;
Описание
DELETE-тип SQL-команды. Эти инструкции будут выполнены каждый раз, когда Вы
выполняете Delete на наборе данных. Этот список строк может содержать несколько
инструкций, разделеных точкой с запятой (;).
Свойство SQLInsert
Применимо к TMySQLDataset
Определение
property SQLInsert : TStrings;
Описание
INSERT-тип SQL-команды. Эти инструкции будут выполнены каждый раз, когда Вы
выполняете Insert или Append на наборе данных. Этот список строк может содержать
несколько инструкций, разделеных точкой с запятой (;).
Свойство SQLUpdate
Применимо к TMySQLDataset
Определение
property SQLUpdate : TStrings;
Описание
UPDATE-тип SQL-команды. Эти инструкции будут выполнены каждый раз, когда Вы
выполняете Edit и Post на наборе данных. Этот список строк может содержать
несколько инструкций, разделеных точкой с запятой (;).
Свойство TableName
Применимо к TMySQLDataset
Определение
property TableName : string;
Описание
Имя в настоящее время выбранной таблицы. Это заменит макросы $TABLENAME в
Ваших инструкциях SQL.
Свойство UniqueKeyFields
Применимо к TMySQLDataset
Определение
property UniqueKeyFields : string;
Описание
Список всех уникальных полей, используемых в текущем наборе результатов.
Только Run-time. Read-only.
Метод EscapeStr
Применимо к TMySQLDataset
Определение
function EscapeStr(const Value : string) : string;
Описание
Создает экранированную строку для сервера MySQL, используя функцию
mysql_escape_string.
Метод ExecBatch
Применимо к TMySQLDataset
Определение
function ExecBatch : boolean;
Описание
Выполняет инструкции SQLBatch, использующие подключение набора данных и
текущие параметры настройки.
Метод ExecSQL
Применимо к TMySQLDataset
Определение
function ExecSQL(SQL : string; EnableMacros, Cached : boolean) : boolean;
Описание
Выполнит любую инструкцию SQL, использующую подключение набора данных. Если
EnableMacros равно True, SQL будет анализироваться, используя макрокоманды. Если
Cached равно True, SQL-запрос будет послан серверу со следующим обращением к
методу Close или Refresh.
Метод ExecSQLBatch
Применимо к TMySQLDataset
Определение
function ExecSQLBatch(SQL : TStrings; EnableMacros, Cached,
AutoRefresh : boolean): boolean;
Описание
Выполнит любую инструкцию SQL, использующую подключение набора данных. Если
EnableMacros равно True, SQL будет анализироваться, используя макрокоманды. Если
Cached равно True, SQL-запрос будет послан серверу со следующим обращением к
методу Close или Refresh. AutoRefresh не используется.
Метод GetMacroValue
Применимо к TMySQLDataset
Определение
function GetMacroValue(Name : string) : string;
Описание
Возвратит текущее значение макрокоманды Name как строку.
Метод HexStr
Применимо к TMySQLDatasetCVYCG0
Определение
function HexStr(S : PChar; L : longint) : string;
Описание
Применяется для полей типов BLOB и MEMO. Двоичные данные, указанные в S с
длиной L возвратятся как строка, наподобие "0x623E63F...".
Метод LocateRecord
Применимо к TMySQLDataset
Определение
function LocateRecord(const KeyFields : string; const KeyValues : Variant;
Options : TLocateOptions;
SyncCursor : Boolean): Boolean;
Описание
Стандартный метод реализации Locate.
Метод LocateRecordOption
Применимо к TMySQLDatasetCVYCG0
Определение
function LocateRecordOption(const KeyFields : string;
const KeyValues : Variant;
Options : TLocateOptions; SyncCursor : Boolean;
MySQLOptions : TMySQLLocateOptions;
var MatchedField : TField) : Boolean;
Описание
Расширенная версия Locate. Это учитывает полный текстовый поиск на всех полях
текущего набора результатов. Параметры KeyFields, KeyValues и Options работают
так же, как и со стандартным методом Delphi Locate. Если SyncCursor равно True,
набор данных будет установлен в первую согласованную запись. MySQLOptions
определяет направление и тип поиска. MatchedField возвращает компонент TField,
который соответствует критериям. Эта функция вернет True, если соответствие было
найдено.
Метод MacroByName
Применим к TMySQLDataset.
Определение
function MacroByName(const Value : string) : TParam;
Описание
Дает Вам доступ во время выполнения ко всем макрокомандам, используемым в
любых инструкциях SQL. TMySQLDataset может применяться без того, чтобы
использовать любую макрокоманду.
Макросы
Макросы дают возможность Вам что-то задать в Вашем SQL-запросе однажды, а
затем факультативно устанавливать части инструкций SQL позже.
Рассмотрим такую SQL-команду:
"select * from |$TABLENAME |JOIN |WHERE |GROUPBY |ORDER |LIMIT;"
Эта инструкция имеет 6 определенных макрокоманд, первая специальна, но
посмотрим на макрос |WHERE.
По умолчанию это будет пустая строка, если не задано иное. Но если Вы
факультативно хотите устанавливать это, Вы можете:
A) Используя Object Inspector:
Выбрать макрос, нажать на WHERE и ввести значение, подобно "WHERE
AccountID=1".
Теперь закройте и снова откройте набор данных, текст будет помещен в Вашу
инструкцию SQL и послан на сервер без того, чтобы заменить SQL-свойство.
B) В коде указать:
MySQLDataset1.MacroByName('WHERE').AsString := 'WHERE AccountID=1';
MySQLDataset1.Open;
В обоих случаях заключительная инструкция SQL, посланная серверу, будет
выглядеть следующим образом:
"select * from Accounts WHERE AccountID=1;"
Вы можете устанавливать макрокоманды, даже если Ваш набор данных открыт. Они
будут использоваться только, если инструкция SQL должна анализироваться и
выполняться снова.
ОБРАТИТЕ ВНИМАНИЕ: Макрокоманды чувствительны к регистру!
Имеются несколько специальных макрокоманд, которые являются доступными для
использования, но если Вы устанавливаете значение для них, это не будет иметь
эффекта для результата заключительной инструкции SQL, поскольку все эти
макрокоманды автоматически модифицируются и устанавливаются во время выполнения.
Все они начинаются со знака $:
$RELOAD
Вызовет перезагрузку набора данных MySQLServer, результат этой макрокоманды:
пустая строка.
$DATABASENAME
Будет заменен свойством DatabaseName Вашего MySQLDataset.
$TABLENAME
Будет заменен свойством TableName Вашего MySQLDatasset.
$FIELDNAME
Будет заменен первым полем в свойстве FieldName Вашего MySQLDataset.
Разделитель ";" или ",".
$FIELDS
Будет заменен постоянными полями набора данных (поля, которые Вы определили
двойным нажатием на Ваш набор данных). Если таких полей нет, макрос будет
заменен на * (звездочку).
$WHERE
Будет заменен комбинацией свойств MasterFields и Filter. Например, если
MasterFields установлен в "AccountID=AccountID" и Filter равен "AccountName like
"J%", то результатом будет WHERE (AccountID=1) and (AccountName like "J%").
$MODIFIED$FIELDS&VALUES
Будет заменен изменяемыми полями текущей записи, результат примерно таков:
FieldName1="Value1",FieldName2="Value2",...
Обратите внимание: значения экранируются, пустые поля будут равны NULL, типы
BLOB будут равняться 0x874365837546.
$UNMODIFIED$FIELDS&VALUES
Будет заменен неизменяемыми полями текущей записи, результат примерно таков:
FieldName1="Value1",FieldName2="Value2",....
$MODIFIED$FIELD$NAMES
Будет заменен именами изменяемых полей текущей записи, результат примерно
таков: FieldName1,FieldName2,....
$UNMODIFIED$FIELD$NAMES
Будет заменен именами неизменяемых полей текущей записи, результат примерно
таков: FieldName1,FieldName2,....
$MODIFIED$FIELD$VALUES
Будет заменен значениями изменяемых полей текущей записи, результат примерно
таков: "FieldValue1","FieldValue2",....
$UNMODIFIED$FIELD$VALUES
Будет заменен значениями неизменяемых полей текущей записи, результат
примерно таков: "FieldValue1","FieldValue2",....
$OLD$FIELDS&VALUES
Будет заменен всеми полями в текущем наборе результатов и значениями для
предыдущих значений текущей записи, результат напомнит: (FieldName1="Value1")
and (FieldName2="Value2") and ....
$FIELDNAMES&VALUES
Будет заменен всеми свойствами FieldName (разделенными ";" или ","), именами
полей и значениями для текущей записи, результат напомнит:
(FieldName1="Value1") and (FieldName2="Value2") and ....
$PRIMARYFIELDS&VALUES
Будет заменен всеми полями первичного ключа в текущем наборе результатов и
значениями для текущей записи, результат примерно такой:
(FieldName1="Value1") and (FieldName2="Value2") and ....
ОБРАТИТЕ ВНИМАНИЕ: Если не имеется никаких полей первичного ключа в текущем
результате, эта макрокоманда возвратит поля и значения для макроса
$OLD$FIELDS&VALUES.
$UNIQUEFIELDS&VALUES
Будет заменен всеми уникальными полями в текущем наборе результатов и
значениями для текущей записи, результат примерно такой:
(FieldName1="Value1") and (FieldName2="Value2") and ....
$MULTIFIELDS&VALUES
Будет заменен всеми полями, которые являются частями составного ключа в
текущем наборе результатов и значениями для текущей записи, результат будет
примерно таким: (FieldName1="Value1") and (FieldName2="Value2") and ...
.
$FIELDNAMES&VALUES$COMMA
Будет заменен всеми именами полей из свойства FieldName (разделенными ; или
,) и значениями для текущей записи:
FieldName1="Value1",FieldName2="Value2",....
$FIELDNAME$VALUE
Будет заменен первым полем в свойстве FieldName текущей записи MySQLDataset:
"FieldValue1".
YourFieldNameHere
Будет заменен полем, имя которого определено значением текущей записи.
Регистр не имеет значения: "FieldValue1".
$OLD$YourFieldNameHere
Будет заменен полем, имя которого определено предыдущим значением текущей
записи. Регистр не имеет значения: "FieldOldValue1".
Например, если Вы должны модифицировать запись в наборе результатов:
update mytable set AccountName="abc" where AccountName="cba", Вы
изменяете свойство SQL на update mytable set AccountName=|AccountName where
AccountName=|$OLD$AccountName.
$PROMPT$Caption$PromptName$DefaultValue$PasswordChar
Запросит Вашего конечного пользователя на предмет значения, которое будет
вставлено в sql-запрос. Параметры:
Caption: факультативный заголовок для диалога
PromptName: факультативное имя запрашиваемого значения
DefaultValue: факультативное значение по умолчанию
PasswordChar: факультативный парольный символ, например, *
Если макрокоманды не соответствуют никакому из этих специальных имен, то
Macro.AsString используется, чтобы заменить макрокоманду в SQL, например:
MySQLDataset1.MacroByName('WHERE').AsString := 'WHERE AccountID=1';
MySQLDataset1.Open;
Следующее предстваляет собой пример инструкций SQL из фактических программ:
SQL Property: Select
select * from |$TABLENAME WHERE AccountType LIKE "%Employee%"
SQLInsert Property: Insert
use MYSQL;
insert into USER set host="%",user=|ACCOUNTNAME,
password=PASSWORD(|$PROMPT$Password$$*),
select_priv="Y",insert_priv="Y",update_priv="Y", delete_priv="Y",
reload_priv="Y";
use |$DATABASENAME;
insert into |$TABLENAME set |$MODIFIED$FIELDS&VALUES;
|$RELOAD;
SQLUpdate Property: Update
use MYSQL;
update user set user=|ACCOUNTNAME where user=|$OLD$ACCOUNTNAME;
use |$DATABASENAME;
update |$TABLENAME set |$MODIFIED$FIELDS&VALUES where
|$FIELDNAME=|$FIELDNAME$VALUE;
|$RELOAD;
SQLDelete Property: Delete
use MYSQL;
delete from user where user=|ACCOUNTNAME;
use |$DATABASENAME;
delete from |$TABLENAME where |$FIELDNAME=|$FIELDNAME$VALUE;
|$RELOAD;
Cascading deletes made easy:
delete from |$TABLENAME where |$FIELDNAMES&VALUES; //Master table
delete from devices where |$FIELDNAMES&VALUES; // Detail table
Метод ParseSQL
Применим к TMySQLDataset
Определение
function ParseSQL(SQL : string) : string;
Описание
Анализирует строку SQL, извлекает и добавлет все найденные макрокоманды.
Метод QuoteStr
Применим к TMySQLDataset
Определение
function QuoteStr(const S : string) : string;
Описание
Создает цитированную строку, например, "string" превратится в "`string`".
Метод ClearMacros
Применим к TMySQLDataset
Определение
procedure ClearMacros;
Описание
Очищает все установленные значения для существующих макрокоманд.
Метод ConnectEvent
Применим к TMySQLDataset
Определение
procedure ConnectEvent(Sender : TObject; Connecting : Boolean);
Описание
Позволяет набору данных знать то, что делает TMySQLServer. Это обычно
используется только внутреннее между набором данных и TMySQLServer.
Событие OnExecSQL
Применимо к TMySQLDataset
Определение
property OnExecSQL : TMySQLEvent;
Описание
Это событие происходит только прежде, чем инструкция SQL будет послана
серверу MySQL. SQL содержит полный SQL-запрос, который, возможно, изменен или
продолжен, в зависимости от того, была ли эта инструкция выполнена или нет.
Удобно для отладки.
Тип TMySQLEvent
Модуль MySQLDataset
Определение
type
TMySQLEvent = procedure(Server: TMySQLDataset; var SQL: string;
var Continue: boolean); of object;
Описание
Это событие происходит только прежде, чем инструкция SQL будет послана
серверу MySQL. SQL содержит полный SQL-запрос, который, возможно, изменен или
продолжен, в зависимости от того, была ли эта инструкция выполнена или нет.
Удобно для отладки.
Тип TMySQLLocateOptions
Модуль MySQLDataset
Определение
type
TMySQLLocateOptions = set of (loFirst, loNext, loPrior,
loLast, loTextSearch, loMatchAll);
Описание
loFirst: вызывает First на наборе данных перед стартом поиска.
loNext: использует Next на наборе данных, чтобы искать вперед.
loPrior: использует Prior на наборе данных, чтобы искать назад.
loLast: вызывает Last на наборе данных перед стартом поиска.
loTextSearch: выполняет текстовый поиск на полях, включенных в search, таким
образом, KeyValues должен содержать строку.
loMatchAll: все поля записи должны содержать значение, определенное для
поиска в KeyValues.
Пример: свойства сервера
ShowMessage('MySQL server''s properties are:'#13#10+
'Server version:'+MySQLServer1.ServerVersion+#13#10+
'Client version:'+MySQLServer1.ClientVersion+#13#10+
'Protocol:'+MySQLServer1.Protocol+#13#10+
'Information:'+MySQLServer1.Info+#13#10+
'Major:'+IntToStr(MySQLServer1.Major)+#13#10+
'Minor:'+IntToStr(MySQLServer1.Minor)+#13#10+
'Build:'+IntToStr(MySQLServer1.Build)+#13#10+
'Complete:'+IntToStr(MySQLServer1.IntVer)+#13#10);
Пример: создание сервера
with TMySQLServer.Create(nil) do try
Host := 'localhost';
Username := 'root';
Password := '';
DatabaseName := 'mysql';
LoginPrompt := False;
Connected := True;
ExecSQL('GRANT SELECT, INSERT, UPDATE, DELETE, RELOAD ON *.* TO
'Admin'@'%'');
Reload;
CreateDatabase('Test');
DropDatabase('Test');
GetDatabaseNames(List);
GetTableNames('mysql',List);
GetFieldNames('mysql','user',List);
finally
Free;
end;
Пример: использование MySQLDataset
with TMySQLDataset.Create(nil) do try
Server := MySQLServer1;
DatabaseName := 'mysql';
TableName := 'user';
Active := True;
ExecSQL('GRANT SELECT, INSERT, UPDATE, DELETE, RELOAD ON *.* TO
''Admin''@''%''', True, False);
Server.Reload;
MacroByName('WHERE').AsString := 'where user=''root''';
Close;
Open;
ShareConnection := False;
Open;
// Now the dataset has it's own threaded connection
ShareConnection := True;
Open;
// Now we are back on the TMySQLServer connection
ClearMacros;
MacroByName('ORDER').AsString := 'order by user';
MacroByName('LIMIT').AsString := 'limit 0,10';
Close;
Open;
CahcedUpdates := True;
// All edits, insert, deletes, updates are now cached
Edit;
FieldByName('user').AsString := 'test';
Post;
Close;
// Cached statements flushed
CachedUpdates := False;
// Statements not cached, sent real-time to server
finally
Free;
end;
содержание назад вперед