Adotable delphi описание компонента

Компонент ТАDOTаblе обеспечивает использование в приложениях Delphi таблиц БД, подключенных через провайдеры OLE DB. По своим функциональным возможностям и применению он подобен стандартному табличному компоненту.

Основным преимуществом табличного типа набора данных является то, что они поддерживают индексы. Индексы позволяют очень быстро осуществлять сортировку и поиск. Это особенно актуально для баз данных, отличных от SQL, например для Microsoft Access. Но при использовании баз данных SQL сортировку, фильтрацию и другие подобные операции лучше выполнять при помощи операторов языка SQL.

База данных задается свойствами ConnectionString, или свойством Connection, подключающим компонент к ADOConnection. Для управления таблицей в приложение вводится, помимо компонента ADOTable, обычный компонент источника данных DataSource, в свойстве DataSet которого задается имя компонента ADOTable. Далее к этому источнику данных DataSourceподключаются любые компоненты отображения данных.

Имя таблицы БД задается свойством TableName. Соединение с базой данных осуществляется методом Open или установкой в true свойства Active. При этом если связь с базой данных осуществляется через компонент ADOConnection, надо учитывать указанную в описании этого компонента взаимосвязь свойства Activeкомпонента ADOTable и свойства Connected компонента ADOConnection.

Использование Аdo-компонентов в Delphi

Вид урока: практическое занятие

Метод обучения: частично-поисковый

Цели урока:

  • Обучающие:
    • изучить свойства компонентов TADOConnection, TADODataSource, TADODataSet, TADOTable, TADOQuery.
    • научить использовать ADO-компоненты Delphi и их свойства для создания приложений.
  • Развивающие:
    • продолжить развитие логического мышление студентов;
    • показать вариативность использования разных свойств объектов для выполнения одних и тех же задач;
    • продолжить формирование у студентов навыков по разработке интерфейса программы;
    • организовать взаимосвязь между дисциплинами «Базы данных», «Основы алгоритмизации и программирования»
  • Воспитывающие:
    • воспитывать способность к самостоятельному поиску решения задачи.

Оборудование: персональные компьютеры

Учебный и раздаточный материал:

  • электронный практикум;
  • файл базы данных, подключаемой с помощью ADO-компонентов;
  • задания для самостоятельной работы;

ПО: Borland Delphi for Microsoft Windows.

Этапы урока

Деятельность преподавателя

Деятельность студентов

Средства обучения

Организационный момент

Преподаватель приветствует студентов, проверяет посещаемость ,сообщает тему занятия. Студенты записывают тему занятия в тетрадь

Повторение пройденного материала

Преподаватель повторяет со студентами основные ADO- компоненты Delphi. Студенты отвечают на вопросы преподавателя Приложение Delphi

Изучение нового материала

Преподаватель знакомит студентов со свойствами ADO-компонентов, демонстрирует способы изменения свойств компонентов Delphi, знакомит студентов с событиями обработки компонентов формы. Студенты вместе с преподавателем знакомятся с новыми компонентами и осуществляют создание макета приложения Раздаточный материал: электронный практикум, приложение, файл базы данных, подключаемой с помощью ADO

Самостоятельная работа студентов

Преподаватель следит за правильностью выполнения заданий студентами Самостоятельно выполняют дополнительные задания Приложение Delphi, электронный практикум

Подведение итогов урока, выдача домашнего задания

Подводит итоги занятия.
Выставляет оценки студентам
Выдаёт студентам индивидуальные домашние задания
Студенты демонстрируют результаты работы, записывают д/з Задания для самостоятельной работы

Задание. Информационная система хранит информацию о врачах, о пациентах и их лечении. База данных включает в себя следующие сущности:

Рис. 1

Создать проект в Borland Delphi и обеспечить доступ к БД , используя ADO-компоненты.

ХОД УРОКА

I. Повторение пройденного материала в форме опроса

Вопросы:
– Для чего используются ADO-компоненты в Delphi?
– Какие ADO-компоненты необходимо использовать для организации связи с базой данных? (Приложение 1)
– Какие свойства ADO-компоненты компонентов вы знаете?

II. Изучение нового материала

Вывод данных с помощью ADO-компонент на форму.
Создаем проект Delphi, сохраняем созданное нами приложение в папку «Больница», где расположен файл базы данных.
Помещаем на форму компонент ADOConnection с вкладки ADO палитры компонентов.
Устанавливаем свойство ConnectionString для этого компонента (на вкладке «Поставщик данных» выбираем «Microsoft Jet 4.0 OLE DB Provider» на вкладке «Подключение» выбираем подключаемый файл).
Поскольку файл базы данных и приложение, разрабатываемое в Delphi, находятся в одной папке «Больница», удобнее при подключении не указывать весь путь к базе данных, а ввести только его полное имя. Тогда при переносе в дальнейшем папки «Больница» в другое место, никаких проблем с приложением возникать не будет!

Рис. 2

Проверяем подключение.
Помещаем на форму компонент ADOTable с вкладки ADO палитры компонентов.
Устанавливаем свойство Connection (указываем наш ADOConnection1) – в свойстве TableName компонента ADOTable должно появиться окно ‘Database Login’ а затем в выпадающем списке появится список таблиц нашей базы данных.

Рис. 3

Выбираем таблицу или запрос, которые нам необходимо вывести (обратите внимание, что для вывода каждой таблицы или запроса необходим отдельный компонент ADOTable или ADOQuery соответственно, но ADOConnection для всех один!).
Устанавливаем на форму компонент DataSource со вкладки Data Access.
Свойство DataSet этого компонента меняем на ADOTable1.
Помещаем DBGrid с вкладки Data Controls и свойству DataSource присваиваем значение DataSource1.
Помещаем DBNavigator с вкладки Data Controls и свойству DataSource присваиваем значение DataSource1.
Активируем подключенную таблицу, задав свойству Active компонента ADOTable1 значение True, в результате чего в DBGrid отобразится таблица из нашей базы данных. Можно активировать таблицу с помощью кнопки:
procedure TForm1.Button1Click(Sender: TObject).

begin
adotable1.Open;
end;

Чтобы каждый раз при запуске программы на экран не выходило окно ‘Database Login’, установите свойство LoginPrompt компонента ADOConnection равным False.

III. Создание интерфейса приложения

По шаблону, предложенному выше, необходимо для каждой из таблиц определить свой ADO-компонент. Для этого размещаем на форме компоненты ADOTable1, …, ADOTable6, подключаем их к файлу базы данных (свойство Connection), задаем свойству TableName для этих компонентов следующие значения:

ADOTable1 – таблица «Пациенты»
ADOTable2 – таблица «№ палаты»
ADOTable3 – таблица «Врачи»
ADOTable4 – таблица «Палаты»
ADOTable5 – таблица «Препараты»
ADOTable6 – таблица «Лечение»

Размещаем на форме компоненты DataSource1, …, DataSource6, которые могут нам понадобиться для отображения или передачи данных. Для каждого из них определяем в свойстве DataSet соответствующую таблицу.

Рис. 4

Устанавливаем на форму компонент DBLookupComboBox (см. рис 5) с вкладки Data Controls (список будет использоваться для отображения номеров палат ) и в свойствах ListSource, ListField и KeyField этого компонента задаём имя отображаемого столбца . Свойство DataSource компонента необходимо оставить пустым.

Отобразим с помощью компонента DBGrid содержимое таблицы «Пациенты» (присваиваем свойству DataSource значение DataSource1)

Обеспечим возможность модификации созданной таблицы с помощью компонента DBNavigator и проверим его работоспособность (если редактирование таблицы с помощью этого компонента оказалось затруднительным, то необходимо изменить свойство Options компонента DBGrid, задав dgEditing ––> true)

Определим событие OnClick для компонента DBLookupComboBox, при выполнении которого выводится информация о пациентах, размещённых в палате с выбранным номером. Реализовать это событие можно двумя способами:

1 способ (с использованием фильтра):

Размещаем на форме компоненты DataSource7, который будет использован для отображения и передачи данных запроса ADOQuery1 ( определяем в свойстве DataSet компонент ADOQuery1). Создаём SQL- запрос на вывод информации о пациентах путём использования свойства SQL ––> Text компонета ADOQuery1 с помощью команды form1.ADOQuery1.SQL.Text:=’SELECT … FROM …..’.
Открываем SQL- запрос и осуществляем фильтрацию информации по заданному критерию с помощью команд:

Рис. 5

2 способ (критерий отбора задаётся в разделе Where SQL-запроса):

Создаём SQL-запрос на вывод информации о пациентах находящихся в палате, номер которой задан в компоненте DBLookupComboBox, с помощью команды:

Рис. 6

Определим событие OnClick для кнопки «Назначение номера палаты и лечащего врача».
При нажатии на эту кнопку открывается форма «Добавление информации» (см. рис.10), на которой отображаются «№ палаты» и «ФИО врача» пациента с заданным номером. Поиск этих данных осуществляется (см. рис. 1) по схеме:

Палаты. ––> Палаты.
Палаты. ––> Палаты. ––> Врачи. ––> Врачи.

Рис. 7

Рис. 8

Определим событие OnClick для кнопки «Добавить» (см. рис.7). При нажатии на эту кнопку введённая информация добавляется в поля «Код пациента», «код врача» и «Код палаты» таблицы «Палаты»:

Рис. 9

Определим событие OnClick для кнопки «Информация о всех пациентах» (см. рис.7), которая будет отображать в компоненте DBGrid содержимое Таблицы «Пациенты» с помощью команды:

Рис. 10

Размещаем на форме (см.рис.11 )компонент DBLookupListBox с вкладки Data Controls (список будет использоваться для отображения фамилий врачей, работающих в больнице) и в свойствах ListSource, ListField и KeyField этого компонента задаём имя таблицы и отображаемого столбца . Свойство DataSource компонента необходимо оставить пустым.

Рис. 11

Ниже приведён фрагмент программы, позволяющий при включении переключателя «Врачи» отобразить содержимое поля «ФИО врача» в компоненте DBLookupListBox

Рис. 12

Создадим для компонента DBLookupListBox контекстное меню (см. рис.11), позволяющее редактировать записи в списке (добавлять записи, редактировать записи, удалять записи):
Рассмотрим фрагмент программы для добавления информации в список DBLookupListBox с помощью функции Inputbox (на рис. 13 показано окно для ввода данных, реализованное с помощью функции Inputbox ).

Рис. 13

Рис. 14

Рассмотрим фрагмент программы для редактирования информации в списке DBLookupListBox (на рис. 15 показано окно для ввода данных, реализованное с помощью функции Inputbox )

Рис. 15

Рис. 16

Рассмотрим фрагмент программы для удаления информации из списка DBLookupListBox

Рис. 17

IV. Самостоятельная работа студентов

По аналогии с п.7 предыдущего раздела, создадим событие OnClick для кнопки «Назначение лечения».При нажатии на эту кнопку открывается форма «Добавление информации о лечении», на которой будет отображен код выбранного пациента, можно выбрать название препарата из списка (компонент DBLookupComboBox), задать количество препарата, выбрать врача из списка (компонент DBLookupComboBox) и ввести дату назначения. По заполненным данным должны быть определены «код_ препарата», «количество_препарата», «код врача», «дата назначения» и информация добавлена в таблицу «Лечение»

По аналогии с п.10 предыдущего раздела, создадим событие обработки нажатия на переключатель «Препараты» (см. рис.11). При включении переключателя «Препараты» необходимо отобразить содержимое поля «Препараты» в компоненте DBLookupListBox.

По аналогии с п.11 предыдущего раздела, добавим в программу возможность редактирования записей из списка «Препараты» (добавлять записи, редактировать записи, удалять записи). Для того, чтобы обе таблицы (и таблица «Врачи» , и таблица «Препараты») редактировались с помощью одного контекстного меню компонента DBLookupListBox, необходимо определить какой из переключателей включен. Для этого опереторы по редактированию таблиц необходимо внедрить в условные конструкции представленные ниже:

Рис. 18

V. Подведение итогов урока, выдача домашнего задания

Преподаватель подводит итоги занятия, выставляет оценки студентам, выдаёт студентам домашние задание:
Создать SQL-запрос, подсчитывающий количество пациентов в больнице
Создать SQL-запрос, позволяющий удалить из базы данных выписавшихся больных (дата выписки которых больше сегодняшней даты)

Рис. 19

Полный код программы и файл базы данных вы можете просмотреть в Приложении 2.

Список литературы:

Введение в ADO.NET

Что такое ADO.NET?

Последнее обновление: 31.10.2015

Сегодня большое значение имеет работа с данными. Для хранения данных используются различные системы управления базами данных: MS SQL Server, Oracle, MySQL и так далее. И большинство крупных приложений так или иначе используют для хранения данных эти системы управления базами данных. Однако чтобы осуществлять связь между базой данных и приложением на C# необходим посредник. И именно таким посредником является технология ADO.NET.

ADO.NET предоставляет собой технологию работы с данными, которая основана на платформе .NET Framework. Эта технология представляет нам набор классов, через которые мы можем отправлять запросы к базам данных, устанавливать подключения, получать ответ от базы данных и производить ряд других операций.

Причем важно отметить, что систем управления баз данных может быть множество. В своей сущности они могут различаться. MS SQL Server, например, для создания запросов использует язык T-SQL, а MySQL и Oracle применяют язык PL-SQL. Разные системы баз данных могут иметь разные типы данных. Также могут различаться какие-то другие моменты. Однако функционал ADO.NET построен таким образом, чтобы предоставить разработчикам унифицированный интерфейс для работы с самыми различными СУБД.

Основу интерфейса взаимодействия с базами данных в ADO.NET представляет ограниченный круг объектов: Connection, Command, DataReader, DataSet и DataAdapter. С помощью объекта Connection происходит установка подключения к источнику данных. Объект Command позволяет выполнять операции с данными из БД. Объект DataReader считывает полученные в результате запроса данные. Объект DataSet предназначен для хранения данных из БД и позволяет работать с ними независимо от БД. И объект DataAdapter является посредником между DataSet и источником данных. Главным образом, через эти объекты и будет идти работа с базой данных.

Однако чтобы использовать один и тот же набор объектов для разных источников данных, необходим соответствующий провайдер данных. Собственно через провайдер данных в ADO.NET и осуществляется взаимодействие с базой данных. Причем для каждого источника данных в ADO.NET может быть свой провайдер, который собственно и определяет конкретную реализацию вышеуказанных классов.

По умолчанию в ADO.NET имеются следующие встроенные провайдеры:

  • Провайдер для MS SQL Server

  • Провайдер для OLE DB (Предоставляет доступ к некоторым старым версиям MS SQL Server, а также к БД Access, DB2, MySQL и Oracle)

  • Провайдер для ODBC (Провайдер для тех источников данных, для которых нет своих провайдеров)

  • Провайдер для Oracle

  • Провайдер EntityClient. Провайдер данных для технологии ORM Entity Framework

  • Провайдер для сервера SQL Server Compact 4.0

Кроме этих провайдеров, которые являются встроенными, существует также множество других, предназначенных для различных баз данных, например, для MySQL.

Основные пространства имен, которые используются в ADO.NET:

  • System.Data: определяет классы, интерфейсы, делегаты, которые реализуют архитектуру ADO.NET

  • System.Data.Common: содержит классы, общие для всех провайдеров ADO.NET

  • System.Data.Design: определяет классы, которые используются для создания своих собственных наборов данных

  • System.Data.Odbc: определяет функциональность провайдера данных для ODBC

  • System.Data.OleDb: определяет функциональность провайдера данных для OLE DB

  • System.Data.Sql: хранит классы, которые поддерживают специфичную для SQL Server функциональность

  • System.Data.OracleClient: определяет функциональность провайдера для баз данных Oracle

  • System.Data.SqlClient: определяет функциональность провайдера для баз данных MS SQL Server

  • System.Data.SqlServerCe: определяет функциональность провайдера для SQL Server Compact 4.0

  • System.Data.SqlTypes: содержит классы для типов данных MS SQL Servera

  • Microsoft.SqlServer.Server: хранит компоненты для взаимодействия SQL Server и среды CLR

Схематично архитектуру ADO.NET можно представить следующим образом:

Функционально классы ADO.NET можно разбить на два уровня: подключенный и отключенный. Каждый провайдер данных .NET реализует свои версии объектов Connection, Command, DataReader, DataAdapter и ряда других, который составляют подключенный уровень. То есть с помощью них устанавливается подключение к БД и выполняется с ней взаимодействие. Как правило, реализации этих объектов для каждого конкретного провайдера в своем названии имеют префикс, который указывает на провайдер:

Другие классы, такие как DataSet, DataTable, DataRow, DataColumn и ряд других составляют отключенный уровень, так как после извлечения данных в DataSet мы можем работать с этими данными независимо от того, установлено ли подключение или нет. То есть после получения данных из БД приложение может быть отключено от источника данных.

13. Применение ADO и работа с базами данных

Получить учебные материалы по этому курсу

Объектная модель ADO (ActiveX Data Objects) в скриптах VBScript, взаимодействие с базами данных из VBScript, MDAC (Microsoft Data Access Components), объекты ADO.Connection, Recordset и Command

13.1 Что такое ADO

ADO расшифровывается как ActiveX Data Objects — набор программных объектов, построенных по технологии ActiveX (COM) и позволяющий получать данные и управлять ими на самых разных источниках. Другие наборы программных объектов для доступа к источникам данных, которые часто используются в скриптах — это DAO и RDO, но эти программные объекты устарели и к использованию в современных приложениях не рекомендуются. В настоящее время появилась новая версия ADO — ADO.NET, которая сильно отличается от обычной ADO и предназначена для работы в .NET Framework. Однако по причине того, что ADO.NET:

· обязательно требует установленной .NET Framework (чего на многих старых компьютерах нет)

· обычными средствами с ADO.NET работать не получится — требуется Visual Studio.NET;

· отличается повышенной ресурсоемкостью

ADO.NET в этом курсе рассматриваться не будет.

ADO умеет работать с самыми разными драйверами для подключения к базам данных, например, с драйверами OLE DB и ODBC. Поскольку ADO построен по технологии COM, эти объекты можно использовать в любых COM-совместимых языках программирования (VC++, Visual Basic, Deplhi, VBA, VBScript, JScript, ActivePerl и т.п.).

Сами программные объекты поставляются в наборе драйверов для подключения к базам данных, которые называются MDAC (Microsoft Data Access Components). Этот набор драйверов можно совершенно бесплатно скачать с Web-сайта Microsoft. Настоятельно рекомендуется отслеживать появление новых версий MDAC и устанавливать их на компьютерах пользователей.

Официальная документация по ADO содержится в MDAC Software Development Kit, который также можно бесплатно скачать с Web-сайта Microsoft. Множество дополнительной информации, примеров и т.п. можно найти в MSDN (искать на «ADO API Reference», например, «ADO 2.8 API Reference» и TechNet. Наглядные примеры и хорошие рекомендации по практическому применению имеются в курсах MOC.

Главные объекты ADO выглядят следующим образом:

· объект Connection — позволяет установить соединение с источником данных и управлять им. Все ошибки, которые возникают в ходе работы соединения, помещаются в сопутствующую коллекцию Errors.

· объект Command — представляет команду, при помощи которой производится выполнение определенной операции на источнике данных (выполнение запроса, хранимой процедуры, создание или изменение объекта, изменение данных и т.п.). Если источник данных — SQL-совместимый, то объект Command, скорее всего, будет представлять команду SQL. Объекту Command сопутствует коллекция Parameters — параметры, которые передаются запросу или хранимой процедуре.

· объект Recordset — представляет набор записей, полученных с источника или сгенерированный другим способом. Ему сопутствует коллекция Fields, представляющая информацию о столбцах в этом наборе записей (имя, тип, размерность данных и т.п.), а также сами данные.

Для каждого из этих трех объектов предусмотрена также коллекция Properties, которая определяет соответственно свойства соединения, команды или набора записей.

Все объекты явно создавать необязательно — например, при создании объекта Recordset можно в автоматическом режиме создать объект Connection.

Для того чтобы использовать возможности ADO, необходимо, чтобы эта библиотека была установлена на компьютере. Вместе с Windows 2000 поставляется ADO версий 2.0 и 2.1. Весь код, который приведен в методичке, проверен на работоспособность под этой версией, и поэтому дополнительно устанавливать на компьютеры обычно ничего не требуется.

На момент создания этого курса последней версией MDAC (и, соответственно, библиотеки ADO) была версия 2.8. В этом курсе мы будем работать именно с ней.

Компонент Delphi ADOConnection обеспечивает соединение других компонентов ADO приложения с базой данных и осуществляет управление транзакциями.

Использовать ADOConnection достаточно просто. Разместите этот компонент на форме и настройте его свойство ConnectionString таким же образом, как вы делали это для компонента ADOTable.

Чтобы в предыдущем примере воспользоваться новым соединением, присвойте значение ADOConnection свойству Connection компонента ADOTable. Вы увидите, что значение свойства ConnectionString станет пустым, так как свойства Connection и ConnectionString исключают друг друга.

Если при выполнении программы появится диалоговое окно DataBase Login, вы можете его отключить присвоив свойству LoginPrompt значение False.

Преимущество использования ADOConnection состоит в том, что строка подключения теперь хранится в одном месте, вместо того чтобы храниться в нескольких разных компонентах. Если вы не добавите в программу компонент ADOConnection, каждый компонент ADO будет обладать собственным соединением с сервером.

Строка подключения в ConnectionString

Как было рассмотрено ранее, для подключения к определенной базе данных необходимо задать строку подключения ConnectionString. Выбрав это свойство в компоненте ADO откроется специальный редактор (рис.ниже).

Как Вы видите, предлагается два варианта, выбрать необходимый провайдер и путь к базе данных вручную (кнопка Build…), либо воспользоваться созданным заранее, так называемым файлом связи с данными (Data Link File). Преимущество второго в том, что путь к базе в этом случае записывается в отдельном файле, а не внутри исполняемого exe-файла, и может быть, при необходимости отредактирован.

Data Link File — это строка подключения, оформленная в виде INI-файла. Файл связи с данными может обладать любым расширением, однако рекомендуется использовать расширение .udl. Вы можете создать такой файл при помощи любого текстового редактора. Однако, рекомендуем поступить следующим образом: создайте обычный пустой текстовый файл и поменяйте его расширение на .udl (к примеру, ADOConnectLine.udl, иконка файла должна будет поменяться) и щелкните по нему. Появится стандартный редактор «Свойства канала передачи данных», где вы должны указать провайдер и путь к базе данных. В файл будет записан следующий текст:

Далее, когда в редакторе свойства ConnectionString вы выберете Use Data Link File, обратите внимание, что в этом свойстве будет автоматически размещена строка ‘FILE NAME =’, за которой будет указано имя файла связи с данными.

Компонент ADOConnection обеспечивает соединение других компонентов ADOприложения с базой данных и осуществляет управление транзакциями.
Использовать ADOConnection достаточно просто. Разместите этот компонент на форме и настройте его свойство ConnectionString таким же образом, как вы делали это для компонента ADOTable.

Чтобы в предыдущем примере воспользоваться новым соединением, присвойте значение ADOConnection1 свойству Connection компонента ADOTable1. Вы увидите, что значение свойства ConnectionString станет пустым, так как свойстваConnection и ConnectionString исключают друг друга.

Если при выполнении программы появится диалоговое окно DataBase Login, вы можете его отключить присвоив свойству LoginPrompt значение False.

Преимущество использования ADOConnection состоит в том, что строка подключения теперь хранится в одном месте, вместо того чтобы храниться в нескольких разных компонентах. Если вы не добавите в программу компонент ADOConnection, каждый компонент ADO будет обладать собственным соединением с сервером.

Работа с ADO в Delphi. Часть 11. Получение информации набора данных

Всем доброго времени суток дорогие читатели! В этой статье хотел бы поговорить о работе ADO, а именно о получении всевозможной информации о таблицах, полях и так далее. Конечно, может многие уже об этом знают, но все же, данная статья больше будет рассчитана для новичков.

В этой статье мы сможем посмотреть, как можно узнать текущее состояние подключения, также мы сможем определить, что Ваш набор данных поддерживает. То есть в зависимости от настройки Базы данных, мы сможем узнать: поддерживается ли редактирование записей, добавление новых записей, удаление записей и так далее. Также мы определим версию, установленной технологии ADO на компьютере пользователя. Кроме всего это мы научимся получать список доступных базы данных, индексов, полей таблицы, а также процедур, если конечно они присутствуют в таблице, в том числе мы будем получать данные и о системных таблицах, если они, конечно же, имеются в Базе данных.

Ну, что ребята, давайте приступим к самому простому из нашего списка – это определение версии, установленной на компьютере пользователя, технологии ADO. А для начала мы создадим некоторую базу данных и в ней таблицу, с несколькими полями, это на Ваше усмотрение, она может быть произвольной. Я создал таблицу следующего вида:

Все, теперь, давайте сделаем подключение к нашей Базе данных. Как это делается я описывал в статье. После того, как мы соединились с нашей Базой данных, теперь мы можем получать от нее различную информацию и как я говорил Выше давайте начнем с получение версии технологии ADO, установленной на компьютере пользователя. Это мы можем сделать, обращаясь к свойству Version компонента TADOConnecton. Например, так:

Исходный код

procedure TForm1.Button3Click(Sender: TObject); begin Caption:=ADOConnection1.Version; end;

Можете посмотреть результат, у меня на заголовке моей формы отобразилось – 2.8, у Вас естественно может отличаться от моей версии. Кроме того, данное свойство будет работать, то есть, мы сможем получить версию ADO, даже если свойство Connected компонента TADOConnection установлено в False.

Переходим к следующему нашему пункту, а именно получение информации о состоянии соединения в текущий момент времени. Данную информацию мы можем получить, а точнее определить с помощью свойства State компонента TADOConnection.

Список всех возможных значений, которое может принимать свойство State описано ниже:

  • stClosed
  • stOpen
  • stConnecting
  • stExecuting
  • stFetching

Теперь разберемся по порядку. Значение stClosed – означает, что данный (текущий) набор данных не доступен. Значение stOpen – означает, что набор данных открыт и Ваше множество данных доступно для изменения, редактирования, удаления и так далее. Значение stConnecting – означает, что если потомок класса TCustomADODataSet находится в процессе соединения, то вот свойство State и возвращает данное значение. Значение stExecuting – означает то, что в данный момент времени элемент управления выполняет команду. Ну и наконец, значение stFetching – означает, что в данный момент времени происходит выборка строк из таблиц. То есть, если пользователь выбирает по определенному критерию строки из таблицы, то свойство State вернет данное значение. Эти значения можно применить почти к аналогичному свойство множества данных RecordSet – RecordsetState.

Ну что, давайте теперь посмотрим небольшой пример использования:

Исходный код

procedure TForm1.Button1Click(Sender: TObject); begin if ADOConnection1.State= then begin Caption:=’Набор данных открыт’ end; end;

Думаю, что с этим разобрались, так что идем дальше. Давайте теперь попробуем получить список всех таблиц, которые у нас присутствуют в нашей Базе данных. Кроме того, мы получим не только список таблиц, а также некоторые данные по ним, которые будут отображаться в TDBGrid. Ну что, давайте разместим на форме следующие компоненты:

  • TADOConnection
  • TADODataSet
  • TDBGrid
  • TDataSource
  • TButton

Сделайте подключение к Вашей Базе данных через компонент TADOCOnnection, об этом я писал в данной статье. Как только Вы сделали подключение, выделите компонент TADODataSet и в свойстве Connection свяжем его с компонентом TADOConnection. Далее выделяем компонент TDataSource и в свойстве DataSet связываем его с компонентом TADODataSet. Ну и наконец, выделяем компонент TDBGrid и в свойстве DataSource мы связываем его с компонентом TDataSource. Вот и все, нам даже для выполнения данной цели нам и программировать не придется практически, достаточно, чтобы было сделано правильно подключение к нашей Базе данных и связаны между собой компоненты.

Теперь на событие OnClick нашей кнопки напишем код, который состоит всего из двух строчек:

Исходный код

procedure TForm1.Button1Click(Sender: TObject); begin ADOConnection1.Open; ADOConnection1.OpenSchema(siTables,EmptyParam,EmptyParam,ADODataSet1); end;

Первый параметр в процедуре OpenShema может быть не обязательно таблицы, в нем может присутствовать и индекса, процедуры и много другое, то есть о каких элементах Базы данных мы хотим получить данные, первым параметром мы и указываем. У меня получилось следующее:

Как видите, мы здесь получили не только список таблиц нашей базы данных, а также все данные по ним, в том числе и описание таблиц. У меня как-то спрашивали: как можно получить описание таблицы Базы данных MS Access, я привел пример, уже не помню какой именно код, но здесь я привожу еще один вариант, как это можно сделать. Так что, как-то так.
На основе данной процедуры (OpenShema) построены ряд методов, с помощью которых также можно получать данные о таблицах:

Пример использования:

Исходный код

procedure TForm1.Button3Click(Sender: TObject); begin ADOConnection1.GetTableNames(ListBox1.Items); end;

Если в данной процедуре указать необязательный второй параметр и установить его в TRUE, то в компонент TListBox выведется список таблиц нашей Базы данных, в том числе и системные таблицы Базы данных.

Точно также работают и другие методы. Ну что теперь давайте перейдем к последнему нашему пункту статьи – это получение информации о нашем наборе данных. То, есть мы можем определить каким возможностями он обладает. На уровне администрирования нашей База данных мы можем ей выставить какие-то права, вот здесь мы и будем получать то, что мы можем и не можем делать с нашим набором данных. Необходимо на форму установить следующие компоненты:

  • TADOConnection
  • TADODataSet
  • TButton

Теперь необходимо установить соединение к нашей Базе данных через компонент TADOConnection, это конечно можно сделать и сразу в компоненте TADODataSet в свойстве ConnectionString, но все же, сделаем через компонент TADOConnection, если кто-то забыл, как это делать, то смотрим это . После того, как мы установили соединение с нашей Базой данных, выделяем компонент TADODataSet и в свойстве Connection выбираем компонент TADOConnection. Теперь в TADODataSet необходимо добавить некоторый набор данных, который мы будем проверять. Для этого мы выделяем компонент TADODataSet и в свойстве CommandText добавим следующий SQL-запрос:

Исходный код

SELECT * FROM Table1

Почти все, нам осталось компонент TADODataSet только активировать и свойство Active устанавливаем в TRUE. Для того, чтобы нам выявить какими возможностями обладает наш набор данных, то мы воспользуемся функцией:

  • function Supports(CursorOptions: TCursorOptions): Boolean;

Если указанная опция, которая передается в параметр данной функции, поддерживается нашим набором данным, то метод возвратит значение TRUE, если же нет, то соответственно FALSE. Теперь на событие OnClick нашей кнопки пишем следующий код:

Исходный код

procedure TForm1.Button2Click(Sender: TObject); begin ADODataSet1.Active:=True; if ADODataSet1.Supports()=True then begin Caption:=’True’; end; end;

Здесь я запросил данные о том: поддерживает ли наш набор данных (в нашем случае просто таблица) вставку новых записей. Список значений, которое может принимать наша функция Supports следующие:

  • coHoldRecords – большинство записей без подтверждения отложенных обновлений
  • coMovePrevious – курсор может быть перемещен без использования закладок
  • coAddNew – есть возможность вставки новых данных
  • coDelete – есть возможность удаления данных
  • coUpdate – есть возможность модификации данных (редактирование данных)
  • coBookmark — Закладка (свойство Bookmark) объекта Recordset может быть использована для перемещения курсора или для доступа к отмеченной записи
  • coApproxPosition – записи поддерживают свойство Recno, соответственно можно идентифицировать номер записи
  • coUpdateBatch – есть возможность пакетного обновления данных
  • coResync – данные курсора могут обновляться асинхронным способом
  • coNotify — объект Recordset поддерживает уведомления и может генерировать
  • события
  • coFind – для поиска данных можно использоваться метод Locate()
  • coSeek – для поиска данных может использоваться метод Seek()
  • coIndex – для задания текущего индекса таблицы может быть использовано свойство IndexName.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *