WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
Этот модуль включает объект TMySQLServer, полученный из стандартного
класса Delphi 5 TCustomConnection. Компонент: TMySQLServer Типы: TMySQLServerLoginEvent Подпрограммы: MYSQLError Описание TMySQLServer представляет собой основной компонент в наборе
TMySQLComponent. TMySQLServer используется, чтобы обработать фактические
подключения к серверу MySQL, используя стандартные функции из libmysql.dll.
Большую часть времени Вы будете использовать только один компонент сервера,
зато много компонентов TMySQLDatasets. Важно обратить внимание на то, что есть только одно физическое подключение
к серверу MySQL. Все наборы данных, приложенные к этому TMySQLServer,
используют это подключение или породят собственные подключения, использующие
те же самые параметры настройки TMySQLServer. Помимо этих функций, этот компонент имеет много полезных свойств и
функций, чтобы создавать, удалять, использовать базы данных, получать
информацию о версии, собирать списки баз данных, таблиц, полей и т. д. Свойства Методы События Цель Обеспечить все приложенные наборы данных физическими подключениями к
серверу MySQL, используя стандартную библиотеку libmysql.dll. Это основной
компонент в наборе TMySQLComponent. Свойство Build Применимо к TMySQLServer Определение Описание Сервер формирует версию как слово, например, 32 Read-only Свойство ClientVersion Применимо к TMySQLServer Определение Описание Используемая версия клиентской разделяемой библиотеки libmysql.dll. Read-only Свойство Compression Применимо к TMySQLServer Определение Описание Определяет протокол сжатия, используемый при связи с сервером MySQL. Свойство DatabaseName Применимо к TMySQLServer Определение Описание Получает или определяет текущую (актуальную) базу данных
для этого подключения. Свойство Host Применимо к TMySQLServer Определение Описание Получает или определяет имя хоста, используемое при
создании новых подключений. Свойство IdleTimer Применимо к TMySQLServer Определение Описание Получает или определяет актуальное время неактивности (тайм-аут),
позволенное для этого подключения. Подключение автоматически будет
пересоздано после того, как это время закончится, а связь еще нужна. Свойство Info Применимо к TMySQLServer Определение Описание Более подробная информация о сервере. Read-only Свойство IntVer Применимо к TMySQLServer Определение Описание Версия сервера как слово, например, 32306. Read-only Свойство LoginPrompt Применимо к TMySQLServer Определение Описание Если установлено в True, это учитывает настроенный диалог подсказки MySQL
входа в систему, который будет появляться каждый раз, когда устанавливается
связь с этим сервером. Свойство Major Применимо к TMySQLServer Определение Описание Старшая часть версии сервера как слово, например, 3 Read-only Свойство Minor Применимо к TMySQLServer Определение Описание Младшая часть версии сервера как слово, например, 22 Read-only Свойство Params Применимо к TMySQLServer Определение Описание Стандартные параметры, используемые для сервера событием OnLogin. Могут
быть изменены во время выполнения. Свойство Password Применимо к TMySQLServer Определение Описание Получает или определяет текущий пароль, используемый при
создании нового подключения. Свойство Port Применимо к TMySQLServer Определение Описание Получает или определяет текущий порт, используемый при связи с сервером.
Свойство Protocol Применимо к TMySQLServer Определение Описание Используемый протокол связи: TCP/IP, Pipes и т.д. Read-only Свойство ServerVersion Применимо к TMySQLServer Определение Описание Версия сервера MySQL в виде строки. Read-only Свойство UserName Применимо к TMySQLServer Определение Описание Получает или определяет текущее имя пользователя, используемое при
создании нового подключения. Метод AllocConnection Применим к TMySQLServer Определение Описание Распределяет новое подключение для TMySQLServer и TMySQLDatasets,
используя текущие параметры настройки Username, Password, Port и прочие. Это внутренне используемый метод, обычно он используется только
порожденными классами TMySQLServer. Метод ExecSQL Применим к TMySQLServer Определение Описание Используя подключение, выполнит любую инструкцию SQL на сервере. Метод FormatIdentifier Применим к TMySQLServer Определение Описание Форматирует идентификатор Value, используя информацию о версии сервера.
Например, "Table 1" превратится в "`Table 1`". Метод FormatIdentifiers Применим к TMySQLServer Определение Описание Форматирует идентификаторы, полученные в строке Value, используя
информацию о версии сервера. Например, "Table 1#10#13Table2#10#13Table 3"
превратится в "`Table 1`,Table 2,`Table 3`". Метод SelectDatabase Применим к TMySQLServer Определение Описание Для данного подключения выбирает текущую (актуальную) базу данных, то есть
действует аналогично команде "USE Database;". Это внутренне
используемый метод. Обычно он применяется только классами, порожденными
от TMySQLServer. Метод Server Применим к TMySQLServer Определение Описание Представляет собой указатель на текущее потоковое подключение к серверу.
Это может использоваться со всеми стандартными функциями mysql_, найденными в
библиотеке libmysql.dll. Это внутренне используемый метод. Обычно он
применяется только классами, порожденными от TMySQLServer. Метод CreateDatabase Применим к TMySQLServer Определение Описание При использовании подключения к серверу создает новую базу данных, то есть
работает аналогично инструкции "CREATE Database;". Метод DropDatabase Применим к TMySQLServer Определение Описание При использовании текущего подключения к серверу удаляет указанную базу
данных, то есть работает аналогично инструкции "DROP Database;". Метод FreeConnection Применим к TMySQLServer Определение Описание Освобождает активное подключение. Метод GetDatabaseNames Применим к TMySQLServer Определение Описание Заполняет список со всеми именами баз данных, найденными на сервере.
Замечание: в этом списке не будут перечислены те базы данных, на которых Вы
не имеете никаких привилегий. Метод GetFieldNames Применим к TMySQLServer Определение Описание Заполняет cписок всеми именами полей для таблицы TableName из базы данных
DatabaseName с сервера. Метод GetTableNames Применим к TMySQLServer Определение Описание Заполняет cписок всеми именами таблиц из базы данных DatabaseName. Метод Reload Применим к TMySQLServer Определение Описание Перезагружает права доступа на сервере, то есть работает
как команда "RELOAD;" Метод SendEvent Применим к TMySQLServer Определение Описание Используется, чтобы разъединить все наборы данных, если сервер
завершается. Это внутренне используемый метод. Обычно он применяется только
классами, порожденными от TMySQLServer. Событие OnIdleTimer Применимо к TMySQLServer Определение Описание Это событие происходит, когда заканчивается время ожидания подключения.
Событие OnLogin Применимо к TMySQLServer Определение Описание Это событие происходит прежде, чем подключение будет сделано, чтобы
позволить Вам изменять свойства Params. Тип TMySQLServerLoginEvent Модуль MySQLServer Определение Описание Это событие происходит до установки связи с сервером MySQL. Список строк
LoginParams в настоящее время поддерживает только два ключевых слова в форме:
USERNAME=root, PASSWORD=. Процедура MYSQLError Модуль MySQLServer Определение Описание Универсальная функция создания исключительной ситуации, предоставляет
зависящую от версии информацию относительно последней ошибки MySQL. Этот модуль содержит все классы необходимые, чтобы поддерживать
основной класс TMySQLDataset. Компонент: TMySQLDataset. Типы: TMySQLEvent, TMySQLLocateOptions. Константы: DefaultMacroChar='|', DefaultTermChar=';'. TMySQLDataset Модуль: MySQLDataset. Описание Это основной класс, используемый в Вашей прикладной программе. Он был
назван именно Dataset, а не Query или Table потому, что он может легко
использоваться как стандартный TTable или TQuery. Поскольку этот класс
связывается и работает с сервером MySQL, он делает доступными для
использования все инструкции SQL. По умолчанию используется концепция
макросов (Macros) в командах SQL. Эти макрокоманды очень легко могут быть
заблокированы или удалены из значения по умолчанию SQL. Кроме того, являясь прямым поточным подключением к серверу MySQL, класс
был получен непосредственно из TDataset и таким образом поддержан всеми
компонентами для работы с базами данных, включая TDatasource. Этот компонент
имеет все стандартные свойства и методы. Из-за отсутствия поддержки курсоров на стороне сервера в MySQL, этот
компонент полагается на хорошо разработанные таблицы по умолчанию, то есть
Ваши таблицы должны по крайней мере иметь первичный ключ. Если Вы отменяете
заданные по умолчанию инструкции SQL, Вы можете сами определять, когда, что и
над чем будет выполнено. Компонент TMySQLDataset Свойства Методы События Свойство AffectedRows Применимо к TMySQLDataset Определение Описание Число строк, на которые воздействует последняя инструкция SQL,
которая будет выполнена. Только для Run-time. Read-only. Свойство CachedUpdates Применимо к TMySQLDataset Определение Описание Установка этого свойства в True заставит все инструкции SQL, SQLUpdate,
SQLInsert, SQLDelete и SQLBatch кэшироваться на локальной системе и реально
выполняться только тогда, когда методы Close или Refresh в очередной раз
обращаются к этому набору данных. Свойство DatabaseName Применимо к TMySQLDataset Определение Описание В настоящее время выбранная база данных, устанавливая это свойство вызовет
"USE Database" на активной поточной связи этого набора данных с сервером
MySQL. Это значение заменит все макросы $DATABASENAME в Ваших запросах SQL.
Свойство FieldName Применимо к TMySQLDataset Определение Описание В настоящее время выбранное имя поля (возможно, нескольких полей). Это
может содержать список полей, разделенных запятыми, и необязательный
первичный ключ для текущей (актуальной) таблицы. Это заменит все макросы
$FIELDNAME в Ваших запросах SQL. Свойство AllFieldValues Применимо к TMySQLDataset Определение Описание Установите это свойство в True, если Вы хотите, чтобы набор данных
использовал "show columns from table", чтобы получить расширенную информацию
относительно каждого поля, например, значения по умолчанию, перечни
допустимых значений для полей типов ENUM и SET и так далее. Свойство MacroChar Применимо к TMySQLDataset Определение Описание Текущий (актуальный) символ, используемый для определенных макрокоманд в
Ваших инструкциях SQL. Свойство Filter Применимо к MySQLDataset Определение Описание Установите это свойство к любому имеющему силу определению MySQL WHERE,
например, AccountName like "J%". Это значение будет автоматически включено в
макрокоманду $WHERE, если Filtered установлено в значение True. Свойство MacroCount Применимо к TMySQLDataset Определение Описание Число существующих макрокоманд. Только Run-time. Read-only. Свойство Filtered Применимо к TMySQLDataset Определение Описание Установите это свойство в True, если Вы хотите, чтобы текущий (актуальный)
Filter применялся со следующей командой Open к набору данных. Свойство MasterFields Применимо к TMySQLDataset Определение Описание Установите это свойство к любой имеющей силу комбинации Name=Value так,
чтобы получилась пара DetailField=MasterField, например,
MasterFields:='AccountID=AccountID,AccountName=FirstName', или используйте
компоновку, чтобы связать Ваш набор данных с полями MasterSource. AccountID и AccountName берутся из текущего детального набора данных, а
AccountID и Firstname берутся из главного набора данных, определенного
свойством MasterSource. Поля, определенные свойством MasterFields, автоматически анализируются и
будут вставлены в предложение $WHERE, набор данных будет закрыт и вновь
открыт, уже используя новую инструкцию SQL, которая отразит изменения в
наборе данных MasterSource. Свойство Macros Применимо к TMySQLDataset Определение Описание TParams представляет собой совокупность макрокоманд,
найденных в инструкциях SQL. Свойство MasterSource Применимо к TMySQLDataset Определение Описание Установите это свойство к любому имеющему силу доступному источнику
данных. Если это свойство установлено, оно автоматически модифицирует
подробный набор данных для макроса $WHERE, когда происходят
изменения в наборе данных. Свойство MacrosEnabled Применимо к TMySQLDataset Определение Описание Если установлено в True, допускает использование макрокоманд в
Ваших инструкциях SQL. Свойство MultiKeyFields Применимо к TMySQLDataset Определение Описание Список строк всех полей, которые являются частью ключа, доступного в
текущем (актуальном) наборе результатов. Только Run-time. Read-only. Свойство MySQLFields Применимо к TMySQLDataset Определение Описание Список строк всех полей, используемых в текущем наборе результатов.
Только Run-time. Read-only. Свойство MySQLRecords Применимо к TMySQLDataset Определение Описание Необработанные записи из текущего (актуального) набора результатов. Только
Run-time. Read-only. Свойство MySQLTables Применимо к TMySQLDataset Определение Описание Список всех таблиц, используемых в текущем наборе результатов. Только
Run-time. Read-only. Свойство PrimaryKeyFields Применимо к TMySQLDataset Определение Описание Строковый список всех полей первичных ключей, доступных в текущем
наборе результатов. Только Run-time. Read-only. Свойство ReadOnly Применимо к TMySQLDataset Определение Описание Изменение этого свойства включит или отключит редактирование
текущего наборе результатов. Свойство RealSQL Применимо к TMySQLDataset Определение Описание Последняя полная инструкция SQL, которая будет послана серверу MySQL.
Только Run-time. Read-only. Свойство Records Применимо к TMySQLDataset Определение Описание Необработанные записи текущего набора результатов.
Только Run-time. Read-only. Свойство Server Применимо к MySQLDataset Определение Описание TMySQLServer, используемый этим набором данных. Свойство ShareConnection Применимо к TMySQLDataset Определение Описание Если True, этот набор данных совместно использует поточное подключение,
обеспеченное TMySQLServer с TMySQLServer. Обратите внимание: Соблюдайте осторожность при использовании этого, так
как каждый набор данных может использовать любую базу данных, но разделяемое
подключение может использовать в один момент времени только единственную базу
данных. Если выставить значение в False, этот набор данных будет иметь
собственное поточное подключение к серверу MySQL, организованное
TMySQLServer. Все операции будут локальными и не смогут влиять на другой
экземпляр TMySQLDataset или TMySQLServer. Свойство SQL Применимо к TMySQLDataset Определение Описание Тип SELECT SQL-запроса. Эти инструкции будут выполнены, каждый раз, когда
Вы выполняете операцию Open или Active на наборе данных. Этот набор строк
может содержать несколько инструкций, разделеных точкой с запятой (;).
Последняя инструкция должна будет произвести набор результатов. Свойство SQLBatch Применимо к TMySQLDataset Определение Описание Общая команда SQL. Эти инструкции будут выполнены каждый раз, когда Вы
выполняете ExecBatch на наборе данных. Этот список строк может содержать
несколько инструкций, разделеных точкой с запятой (;). Свойство SQLDelete Применимо к TMySQLDataset Определение Описание DELETE-тип SQL-команды. Эти инструкции будут выполнены каждый раз, когда
Вы выполняете Delete на наборе данных. Этот список строк может содержать
несколько инструкций, разделеных точкой с запятой (;). Свойство SQLInsert Применимо к TMySQLDataset Определение Описание INSERT-тип SQL-команды. Эти инструкции будут выполнены каждый раз, когда
Вы выполняете Insert или Append на наборе данных. Этот список строк может
содержать несколько инструкций, разделеных точкой с запятой (;). Свойство SQLUpdate Применимо к TMySQLDataset Определение Описание UPDATE-тип SQL-команды. Эти инструкции будут выполнены каждый раз, когда
Вы выполняете Edit и Post на наборе данных. Этот список строк может содержать
несколько инструкций, разделеных точкой с запятой (;). Свойство TableName Применимо к TMySQLDataset Определение Описание Имя в настоящее время выбранной таблицы. Это заменит макросы $TABLENAME
в Ваших инструкциях SQL. Свойство UniqueKeyFields Применимо к TMySQLDataset Определение Описание Список всех уникальных полей, используемых в текущем наборе результатов.
Только Run-time. Read-only. Метод EscapeStr Применимо к TMySQLDataset Определение Описание Создает экранированную строку для сервера MySQL, используя функцию
mysql_escape_string. Метод ExecBatch Применимо к TMySQLDataset Определение Описание Выполняет инструкции SQLBatch, использующие подключение набора данных и
текущие параметры настройки. Метод ExecSQL Применимо к TMySQLDataset Определение Описание Выполнит любую инструкцию SQL, использующую подключение набора данных.
Если EnableMacros равно True, SQL будет анализироваться, используя
макрокоманды. Если Cached равно True, SQL-запрос будет послан серверу со
следующим обращением к методу Close или Refresh. Метод ExecSQLBatch Применимо к TMySQLDataset Определение Описание Выполнит любую инструкцию SQL, использующую подключение набора данных.
Если EnableMacros равно True, SQL будет анализироваться, используя
макрокоманды. Если Cached равно True, SQL-запрос будет послан серверу со
следующим обращением к методу Close или Refresh. AutoRefresh не используется.
Метод GetMacroValue Применимо к TMySQLDataset Определение Описание Возвратит текущее значение макрокоманды Name как строку. Метод HexStr Применимо к TMySQLDatasetCVYCG0 Определение Описание Применяется для полей типов BLOB и MEMO. Двоичные данные, указанные в S с
длиной L возвратятся как строка, наподобие "0x623E63F...". Метод LocateRecord Применимо к TMySQLDataset Определение Описание Стандартный метод реализации Locate. Метод LocateRecordOption Применимо к TMySQLDatasetCVYCG0 Определение Описание Расширенная версия Locate. Это учитывает полный текстовый поиск на всех
полях текущего набора результатов. Параметры KeyFields, KeyValues и Options
работают так же, как и со стандартным методом Delphi Locate. Если SyncCursor
равно True, набор данных будет установлен в первую согласованную запись.
MySQLOptions определяет направление и тип поиска. MatchedField возвращает
компонент TField, который соответствует критериям. Эта функция вернет True,
если соответствие было найдено. Метод MacroByName Применим к TMySQLDataset. Определение Описание Дает Вам доступ во время выполнения ко всем макрокомандам, используемым в
любых инструкциях 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, например:
Следующее предстваляет собой пример инструкций SQL из фактических программ:
SQL Property: Select SQLInsert Property: Insert SQLUpdate Property: Update SQLDelete Property: Delete Cascading deletes made easy: Метод ParseSQL Применим к TMySQLDataset Определение Описание Анализирует строку SQL, извлекает и добавлет все найденные макрокоманды.
Метод QuoteStr Применим к TMySQLDataset Определение Описание Создает цитированную строку, например, "string" превратится в "`string`".
Метод ClearMacros Применим к TMySQLDataset Определение Описание Очищает все установленные значения для существующих макрокоманд. Метод ConnectEvent Применим к TMySQLDataset Определение Описание Позволяет набору данных знать то, что делает TMySQLServer. Это обычно
используется только внутреннее между набором данных и TMySQLServer. Событие OnExecSQL Применимо к TMySQLDataset Определение Описание Это событие происходит только прежде, чем инструкция SQL будет послана
серверу MySQL. SQL содержит полный SQL-запрос, который, возможно, изменен или
продолжен, в зависимости от того, была ли эта инструкция выполнена или нет.
Удобно для отладки. Тип TMySQLEvent Модуль MySQLDataset Определение Описание Это событие происходит только прежде, чем инструкция SQL будет послана
серверу MySQL. SQL содержит полный SQL-запрос, который, возможно, изменен или
продолжен, в зависимости от того, была ли эта инструкция выполнена или нет.
Удобно для отладки. Тип TMySQLLocateOptions Модуль MySQLDataset Определение Описание loFirst: вызывает First на наборе данных перед стартом поиска. loNext: использует Next на наборе данных, чтобы искать вперед. loPrior: использует Prior на наборе данных, чтобы искать назад. loLast: вызывает Last на наборе данных перед стартом поиска. loTextSearch: выполняет текстовый поиск на полях, включенных в search,
таким образом, KeyValues должен содержать строку. loMatchAll: все поля записи должны содержать значение, определенное
для поиска в KeyValues. Пример: свойства сервера Пример: создание сервера Пример: использование MySQLDataset
6.6 Модуль MySQLServer
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
property Build : word;
property ClientVersion : string;
property Compression : boolean;
property DatabaseName : string;
property Host : string;
property IdleTimer : longword;
property Info : string;
property IntVer : longword;
property LoginPrompt;
property Major : word;
property Minor : word;
property Params : TStrings;
property Password : string;
property Port : word;
property Protocol : string;
property ServerVersion : string;
property UserName : string;
function AllocConnection : PMYSQL;
function ExecSQL(SQL : string) : boolean;
function FormatIdentifier(Value : string) : string;
function FormatIdentifiers(const Value : string) : string;
function SelectDatabase(Conn : PMYSQL; DB : string) : boolean;
function Server : PMYSQL;
procedure CreateDatabase(Value : string);
procedure DropDatabase(Value : string);
procedure FreeConnection(var Value : PMYSQL);
procedure GetDatabaseNames(List : TStrings);
procedure GetFieldNames(const DatabaseName, TableName : string;
List : TStrings);
procedure GetTableNames(const DatabaseName : string; List : TStrings);
procedure Reload;
procedure SendEvent(Connecting : Boolean);
property OnIdleTimer : TNotifyEvent;
property OnLogin : TMySQLServerLoginEvent;
type
TMySQLServerLoginEvent = procedure(Server : TMySQLServer;
LoginParams : TStrings); of object;
procedure MYSQLError(MySQLHandle : PMySQL=nil; ErrNo : integer=-1;
Msg : string=''; IntVer : longword=32100);
6.7 Модуль MySQLDataset
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")
property AffectedRows : string;
property CachedUpdates : boolean;
property DatabaseName : string;
property FieldName : string;
property AllFieldValues : boolean;
property MacroChar : Char;
property Filter : string;
property MacroCount : Word;
property Filtered : boolean;
property MasterFields : string;
property Macros : TMySQLMacros;
property MasterSource : string;
property MacrosEnabled : boolean;
property MultiKeyFields : string;
property MySQLFields : TStringList;
property MySQLRecords : TList;
property MySQLTables : TStringList;
property PrimaryKeyFields : string;
property ReadOnly : boolean;
property RealSQL : string;
property Records[Index : Integer] : PRecInfo;
property Server : TMySQLServer;
property ShareConnection : boolean;
property SQL : TStrings;
property SQLBatch : TStrings;
property SQLDelete : TStrings;
property SQLInsert : TStrings;
property SQLUpdate : TStrings;
property TableName : string;
property UniqueKeyFields : string;
function EscapeStr(const Value : string) : string;
function ExecBatch : boolean;
function ExecSQL(SQL : string; EnableMacros, Cached : boolean) : boolean;
function ExecSQLBatch(SQL : TStrings; EnableMacros, Cached,
AutoRefresh : boolean): boolean;
function GetMacroValue(Name : string) : string;
function HexStr(S : PChar; L : longint) : string;
function LocateRecord(const KeyFields : string; const KeyValues : Variant;
Options : TLocateOptions;
SyncCursor : Boolean): Boolean;
function LocateRecordOption(const KeyFields : string;
const KeyValues : Variant;
Options : TLocateOptions; SyncCursor : Boolean;
MySQLOptions : TMySQLLocateOptions;
var MatchedField : TField) : Boolean;
function MacroByName(const Value : string) : TParam;
MySQLDataset1.MacroByName('WHERE').AsString := 'WHERE AccountID=1';
MySQLDataset1.Open;
select * from |$TABLENAME WHERE AccountType LIKE "%Employee%"
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;
use MYSQL;
update user set user=|ACCOUNTNAME where user=|$OLD$ACCOUNTNAME;
use |$DATABASENAME;
update |$TABLENAME set |$MODIFIED$FIELDS&VALUES where
|$FIELDNAME=|$FIELDNAME$VALUE;
|$RELOAD;
use MYSQL;
delete from user where user=|ACCOUNTNAME;
use |$DATABASENAME;
delete from |$TABLENAME where |$FIELDNAME=|$FIELDNAME$VALUE;
|$RELOAD;
delete from |$TABLENAME where |$FIELDNAMES&VALUES; //Master table
delete from devices where |$FIELDNAMES&VALUES; // Detail table
function ParseSQL(SQL : string) : string;
function QuoteStr(const S : string) : string;
procedure ClearMacros;
procedure ConnectEvent(Sender : TObject; Connecting : Boolean);
property OnExecSQL : TMySQLEvent;
type
TMySQLEvent = procedure(Server: TMySQLDataset; var SQL: string;
var Continue: boolean); of object;
type
TMySQLLocateOptions = set of (loFirst, loNext, loPrior,
loLast, loTextSearch, loMatchAll);
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;
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;
Найди своих коллег! |