29.3. Компоненты взаимодействия с базами данных
Рис.29.3. Схема взаимодействия компонент с использованием BDE
Здесь приведены следующие компоненты:
• TTable – доступа к таблице базы данных,
• TQuery – запроса к базе данных,
• TStoreProc – хранимой процедуры с запросом к базе данных,
• TDataSource – связи компонентов доступа с компонентами управления и отображения данных,
• TDBGrid – отображения данных в виде таблицы.
Компонент управления и отображения данных достаточно много, поэтому на схеме показаны только некоторые из них.
Во время проектирования невизуальные компоненты, в частности компоненты доступа к данным, помещенные на форму, представляются маленькими значками. Но из–за большого количества таких невизуальных компонентов утрачивается наглядность формы. Компоненты доступа к данным обычно располагаются в специальном модуле данных – TDataModule. Создать такой модуль можно, пройдя путь: File → New → Data Module.
Как следует из рис.29.3, для отображения какой–нибудь таблицы базы данных на форму следует поместить как минимум три компонента, например, Table1, DataSource1 и DBGrid1. В свойстве TableName компонента Table1 нужно указать имя таблицы базы данных, в свойстве DataSet компонента DataSource1 – источник данных Table1, а в свойстве DataSource компонента DBGrid1 – источник отображаемых данных DataSource1.
Delphi IDE
Приложение
ADO
ActiveX Data Object
OLE DB
ODBC
База данных
TDataSource
TStoreProc
Компоненты управления
BDE
БД
TTable
TDataSource
TQuery
TDataSource
TDBGrid
TDBEdit
TDBImage
TDBLookupListBox
TDBText
TDBMemo
TDBRichEdit
……..
Компоненты доступа
Рис.29.4. Схема взаимодействия компонент с использованием ADO
На рис.29.4 приведены аналогичные компоненты по сравнению с предыдущим рисунком, только со странички ADO. В их тип входит сочетание букв – ADO. Следует отметить, что в свойствах компонента TADOConnection не следует явно указывать нахождение базы данных в свойстве ConnectionString и задавать программу–провайдер в свойстве Provider. Лучше создать специальный текстовый файл связи с базой данных с расширением *.URL. Затем с помощью программы MS Explorer, которая воспринимает файлы с расширением URL как файлы связи с базой данных, можно настроить этот файл на конкретную базу данных, выбрать программу–провайдер и задать ее параметры. Это позволяет легко переносить базы данных на любой диск без перетрансляции разработанного приложения.
OLE DB
БД
TADOConnection
TADOTable
TADOQuery
TADOStoreProc
TDataSource
TDataSource
TDataSource
TDBGrid
…….
…….
Компоненты доступа
Компоненты управления
Иерархия классов доступа к базам данных
Все классы доступа к базам данных являются наследниками класса TComponent:
Следует отметить, что при всем многообразии типов полей следует по возможности использовать для столбцов строковой тип – TStringField. Это облегчает программирование и упрощает работу с таблицами в среде MS Access.
TComponent // Компонент
TSession // Сессия
TDataSource // Источник данных
TCustomConnection // Базовый класс для соединения с БД
TDataBase // База данных
TADOConnection // ADO соединение с БД
TDataSet // Класс навигации по таблицам БД
TBDEDataSet // Набор данных, связанных с BDE
TDBDataSet // Редактирование и навигация по БД
TTable // Таблица
TQuery // Запрос
TStoredProc // Хранимая процедура
TCustomADODataSet // Базовый класс связи с БД через ADO
TADODataSet // Редактирование и навигация по ADO БД
TADOTable // ADO таблица
TADOQuery // ADO запрос
TADOStoredProc // ADO хранимая процедура
TField // Базовый класс поля таблицы
TStringField // Строковое поле (до 256 символов)
TNumericField // Базовый класс числового поля
TIntegerField // Базовый класс целочисленного поля
TTSmallIntField // Малое целое поле (от -32768 до 32767)
TWordField // Целое число без знака (от 0 до 65535)
TautoIncField // Автоинкрементное поле (4 байта)
TLargeIntField // Целое длинное поле (8 байт)
TFloatField // Поле вещественных чисел (8 байт)
TCurrencyField // Поле денежных величин (8 байт)
TBCDField // Двоично-десятичное поле (8 байт)
TBooleanField // Логическое поле
TDateTimeField // Базовый класс даты и времени
TDateField // Поле даты
TTimeField // Поле времени
TBinaryField // Базовый класс бинарных данных
TBytesField // Массив байт (16 байт)
TVarBytesField // Поле произвольного массива байт (<65535)
TBlobField // Поле массива байт неопределенной длины
TMemoField // Поле текста неопределенной длины
TGraphicField // Поле картинки неопределенной длины
Класс TField
Для каждого столбца набора данных автоматически создается потомок класса TField с типом поля столбца. С помощью редактора полей можно создать вычисляемые поля. Рассмотрим некоторые свойства полей:
• Property AsBoolean:Boolean; – cодержимое поля воспринимается как логическое значение,
• Property AsDateTime:TDateTime; – содержимое поля воспринимается как поле даты и времени,
• Property AsFloat:Double; – содержимое поля воспринимается как вещественное значение,
• Property AsInteger:LongInt; – содержимое поля воспринимается как целое число,
• Property AsString:String; – содержимое поля воспринимается как строка,
• Property EditMask:String; – шаблон маски ввода. Шаблон состоит из 3 секций, разделенных «;». Первая секция – тело маски, вторая секция – символ управления, если это –«0», то можно вводить только цифры иначе – любые символы, третья секция – символ, определяющий пробел для маски. Например, маска для ввода номера телефона может иметь вид Table1.FieldByName(’TEL’).EditMask:=’000-00-00;0;_’;
• Property ValidChars:Set of Char; – Множество допустимых символов для ввода. Например, для ввода только русских букв можно определить это свойство следующим образом: Table1.FieldByName(’FIO’).ValidChars:=[’А’..’я’,’Ё’,’ё’];
Класс TADOTable
Этот класс определяет ADO таблицу. Рассмотрим некоторые из основных свойств и методов этого класса:
• Property Connection: TADOConnection; – определяет соединение с БД,
• Property TableName: WideString; – определяет имя таблицы,
• Property Active: Boolean; – определяет состояние таблицы: открыта она или нет,
• Property Eof: Boolean; – определяет конец таблицы,
• Property MasterSource: TDataSource; – определяет главную таблицу для связываемой таблицы,
• Property MasterFields: String; – определяет поля связи в главной таблице,
• Procedure Append; – переводит таблицу в режим редактирования и добавляет в конец таблицы пустую строку,
• Procedure First; – устанавливает указатель таблицы на первую запись,
• Procedure Last; – устанавливает указатель таблицы на последнюю запись,
• Procedure Next; – переход к следующей записи таблицы,
• Procedure Prior; – переход к предыдущей записи таблицы,
• Procedure Edit; – устанавливается режим редактирования,
• Procedure Post; virtual; – запись изменений в текущую строку,
• Function Seek(const KeyValues: Variant; SeekOption: TSeekOption = soFirstEQ): Boolean; – поиск записи по значению ключевого или индексного поля. Например, в таблице TSpis найдем «Иванова» по индексному полю FIO: If ADOTable1.Seek(’Иванов’, soFirstEQ) then ……; Перед этим оператором нужно будет определить текущим индексное поле «FIO»,
• Function Locate(const KeyFields: String; const KeyValues: Variant; Options: TLocateOptions): Boolean; override; – поиск записи по заданным полям. Например, найдем «Иванова» с 10–летним стажем работы:
- Программирование в среде Delphi
- Программирование в среде Delphi
- 1. История развития вычислительной техники, системы счисления и единицы информации.................................................7
- 2. Структура персонального компьютера и операционные системы.........................................................................13
- 3. Основы алгоритмизации и работа в delphi..........................18
- 4. Базовые элементы delphi...................................................................26
- 5. Стандартные функции и подпрограммы................................30
- 6. Операторы delphi......................................................................................33
- 7. Операторы циклов....................................................................................35
- 18. Выделение памяти под объект и прародитель всех классов – tobject..........................................................................................84
- 19. Обработка исключительных ситуаций................................87
- 20. Основные классы и общие свойства компонентов...93
- 26. Технология com.....................................................................................129
- 1. История развития вычислительной техники, системы счисления и единицы информации
- 1.1. История развития вычислительной техники
- 1.2. Системы счисления
- 1.3. Единицы информации
- 2. Структура персонального компьютера и операционные системы
- 2.1. Структура персонального компьютера.
- 2.2. Операционные системы
- 3. Основы алгоритмизации и работа в delphi
- 3.1. Основы программирования
- 3.2. Программирование в среде Delphi
- 4. Базовые элементы delphi
- 4.1. Алфавит среды Delphi
- 4.2. Константы
- 4.3. Переменные
- 4.4. Основные типы переменных
- 4.5. Операции над переменными и константами
- 5. Стандартные функции и подпрограммы
- 5.1. Математические функции
- 5.2. Функции преобразования
- 5.3. Дополнительные системные подпрограммы и функции
- 6. Операторы delphi
- 6.1. Оператор присваивания
- 6.2. Оператор безусловной передачи управления
- 6.3. Условный оператор if
- 6.4. Оператор разветвления Case
- 6.5. Составной оператор
- 7. Операторы циклов
- 7.1. Оператор цикла For
- 7.2. Оператор цикла Repeat
- 7.3. Оператор цикла While
- 8. Работа с массивами
- 9. Работа со строками
- 9.1. Процедуры работы со строками
- 9.2. Функции работы со строками
- 10. Работа с записями
- 11. Процедуры и функции
- 12. Модуль unit
- 13. Работа со множествами
- 14. Работа с файлами
- 14.1. Текстовые файлы
- 14.2. Типированные файлы
- 14.3. Нетипированные файлы
- 15. Работа с файлами и каталогами
- 16. Динамические переменные и структуры данных
- 16.1. Динамические переменные
- 16.2. Работа со стеком
- 16.3. Работа со списками или очередями
- 16.4. Работа с деревьями
- 17. Основы объектно–ориентированного программирования
- 17.1. Объекты и классы
- 17.2. Области видимости класса
- 17.3. Свойства (Property) и инкапсуляция
- 17.4. Методы, наследование и полиморфизм
- 17.5. События (Events)
- 18. Выделение памяти под объект и прародитель всех классов – tobject
- 18.1. Выделение памяти под объект
- 18.2. Описание класса tObject
- 18.3. Операторы приведения типов классов
- 19. Обработка исключительных ситуаций
- 19.1. Два вида оператора Try
- 19.2. Программное создание исключительной ситуации
- 19.3. Основные исключительные ситуации
- 20. Основные классы и общие свойства компонентов
- 20.1. Класс tList
- 20.2. Класс tStrings
- 20.3. Общие свойства компонентов
- 21. Графические возможности delphi
- 21.1. Класс Tcanvas
- 21.2. Классы тGгарhic и тРicture
- 21.3. Классы tFont, tPen и tBrush
- 21.4. Работа с изображениями
- 22. Визуальные компоненты delphi
- 22.1. Компонент tBitBtn
- 22.2. Компоненты tDrawGrid и tStringGrid
- 22.3. Компонент tPageControl
- 22.4. Компонент tTimer
- 22.5. Компонент tGauge
- 22.6. Компонент tСolorGrid
- 23. Стандартные диалоговые окна и типовые диалоги
- 23.1. Стандартные диалоговые окна
- 23.2. Типовые диалоги
- 24. Форма, приложение и глобальные объекты
- 24.1. Форма и ее свойства
- 24.2. Объект Application
- 24.3. Глобальные объекты
- Объект ClipBoard
- Объект Screen
- Объект Printer
- 25. Межпрограммное взаимодействие
- 25.1. Обмен сообщениями
- 25.2. Динамический обмен данными
- 25.3. Совместное использование общей памяти
- 25.4. Каналы
- 25.5. Сокеты
- 26. Технология com
- 26.1. Интерфейс
- 27. Технология автоматизации
- 27.1. Основы ole Automation
- 27.2. Примеры использования серверов автоматизации
- 27.3. Компоненты ActiveX
- 28. Динамические библиотеки
- 28.1. Создание dll
- 28.2. Использование dll
- 28.3. Пример написания dll
- 29. Работа с базами данных
- 29.1. Основные определения
- 29.2. Взаимодействие приложения на Delphi с базами данных
- 29.3. Компоненты взаимодействия с базами данных
- If adoTable1.Locate(’fio,stag’,varArrayOf([’Иванов’,’10’]),[])Then …;
- 29.4. Работа с локальной базой данных
- 30. Основы языка sql
- 30.1. Составные части sql
- 30.2. Команда select
- 30.3. Пример использования запросов в Delphi
- 31. Создание собственных компонентов
- 32. Работа с реестром
- 33. Перспективы программирования в delphi
- Литература
- 220013, Минск, п.Бровки, 6