MySQL- Руководство разработчика

Модуль 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;

              


Содержание раздела