Использование SQLdb в Lazarus: основы работы с базами данных |
11.03.2009 aRix |
Пакет SQLdb включает в себя набор модулей для доступа к различным SQL базам данных. Собственно сам пакет находится в файле sqldblaz.lpk. Найти визуальные компоненты можно на вкладке SQLdb.
Пакет SQLdb включает следующие компоненты:
TSQLQuery потомок TDataset и он представляет данные из SQL запроса в виде таблицы. Также этот компонент можно использовать для выполнения запроса, не возвращающих данных.
Создает транзакцию на сервере базы данных. Я не буду подробно рассказывать об этом компоненте, поскольку практически не использую его. Важно, что он имеет методы для фиксации и отката транзакции.
Где XXX название базы данных к которой необходимо подключиться. Каждый из этих компонентов переводит стандартные запросы от SQLQuery и SQLTransaction в запросы к конкретной базе данных, сглаживая их различия. В версии 0.9.26 доступны следующие компоненты
Для использования SQLdb в Lazarus Вам понадобится компоненты TSQLQuery и TSQLTransaction, а также один из Connection компонентов.
Вы должны проделать ряд шагов:
После этого добавьте элементы управления
Результат запросов, выполняемых с помощью TSQLQuery, можно непосредственно отображать в TDBGrid, однако TDBGrid не подходит для редактирования отдельных полей базы данных. Для этих целей можно использовать компонент TDBEdit, установив его свойство DataSource. В свойстве DataField необходимо указать имя редактируемого поля.
Компонент TDBNavigator значительно упрощает навигацию по записям базы данных. После того как запись выбрана с помощью DBNavigator или в DataGrid, соответствующе данные отображаются в TDBEdit. Если нажать кнопку Edit, эти данные можно будет изменять. Нажмите кнопку Post для внесеия изменений в базу данных или Cancel для отмены изменений.
После того, как вы проделаете эти шаги, установите свойтво Active (компонент TSQLConnection и TSQLTransaction) в true. После этого результат запроса будет отображаться на форме.
При изменении записи, TSQLQuery необходимо знать какие поля составляют первичный ключ, который можно использовать для изменения записи.
Конструкция инструкции SQL управляется свойствами UsePrimaryKeyAsKey и ProviderFlags.
Свойство Providerflags включает в себя три флага:
pfInkey - поле является частью первичного ключа.
pfInWhere - поле должно использоваться в области WHERE SQL запроса.
pfInUpdate - Update или insert запросы должны включать это поле.
По умолчанию ProviderFlags содержит только pfInUpdate.
Если у таблицы задан первичный ключ, Вам просто необходимо установить UsePrimaryKeyAsKey в true. Это установит флаг pfInKey для поля первичного ключа.
Если таблица не содержит первичного ключа, но в ней есть несколько полей, которые могут однозначно идентифицировать запись, Вы можете включить pfInKey опцию в свойстве ProviderFlags всех полей, однозначно идентифицирующих запись.
Свойство UpdateMode будет определять какие поля будут использоваться в области WHERE:
upWhereKeyOnly
Когда TSQLQuery требуется конструкция WHERE, он собирает все поля у которых установлен флаг pfInKey в свойстве ProviderFlags и использует их значения для создания условя WHERE, однозначно определяюшее поля для можификации (Обычно используется в UPDATE и DELETE).
upWhereChanged
В дополнении к полям, у которых установлен флаг pfInKey в свойстве ProviderFlags, все поля с флагом pfInWhere в свойстве ProviderFlags и которые изменились, будут включены в WHERE условие. upWhereAll
В дополнении к полям, у которых установлен флаг pfInKey в свойстве ProviderFlags, все поля с флагом pfInWhere в свойстве ProviderFlags будут включены в WHERE условие.
Возможно определить, какие поля должны быть модифицированы: Как упомянуто выше: только поля, которые имеют pfInUpdate в их свойства ProviderOptions будут включены в SQL инструкции UPDATE ИЛИ INSERT. По умолчанию, pfInUpdate всегда включается в ProviderOptions.
В базе MySQL 5.0.45 свойство active TSQLTransaction нельзя установить в true, однако все работает и компилируется.
Источник: homepg.ru
Оригинал: wiki.lazarus.freepascal.org/SQLdb_Package