Лабораторная работа №3: Применение технологии ADO
Цель работы: Получение доступа к данным с помощью ADO технологии
Создай новый проект. Теперь брось на форму компонент ADOConnection с закладки ADO палитры компонентов. Теперь настроим соединение с сервером, которое должно быть прописано в свойстве ConnectionString. Для этого надо дважды щёлкнуть по строке ConnectionString и перед нами открывается окно. Здесь перед нами стоит выбор:
1. Использовать специальный файл (Use Data Link File);
2. Использовать строку подключения (Use Connection String).
Второе, на мой взгляд, более предпочтительно, поэтому я покажу, как создать строку подключения. Для этого щёлкаем кнопку Build и перед нами открываеться ещё одно окно. На закладке Provider перечислены все доступные ADO драйверы доступа к базам данных. Если какого-то драйвера нет, то можно попробовать выделенный по умолчанию «Microsoft OLE DB Provider for ODBC Drivers». Этот драйвер позволяет получить доступ к базе данных через ODBC драйвер, которые есть к большинству существующих баз данных (единственное, он может быть не установленным на твоём компьютере). В нашем случае, для доступа к базам данных MS Access используется драйвер «Microsoft Jet OLE DB Provider». Такой драйвер обязательно устанавливается на машину вместе с MS Office, а в последних версиях Windows он устанавливается по умолчанию. На моей машине установлено сразу две версии этого драйвера, поэтому я выберу более новый - «Microsoft Jet 4.0 OLE DB Provider». После этого нажимаем кнопку Next, или переходим на закладку «Connection». Вид закладки Connection зависит от выбранного драйвера. Первым делом, в этом окне надо ввести имя (если надо, то и путь) базы данных в строку «Select or enter a database name». Если база данных будет располагаться в той же директории, что и запускной файл, то путь указывать не надо. Я вообще советую хранить базы в одной директории с запускными файлами. Если ты будешь держать файлы отдельно от запускного, то тебе придётся указывать полный путь, а это может вызвать проблемы при переносе программы на другой компьютер. Ведь там программа будет искать базу по казанному пути, который может измениться. Если хочешь держать файлы в другой директории, то указывай относительный путь относительно текущей директории. Чтобы легче было выбрать файл базы данных необходимо щёлкнуть по кнопке с точками справа от строки ввода. Помимо этого, нам надо заполнить следующие поля:
1. Имя пользователя (User name), можно оставить по умолчанию, если не заданно иное при создании базы в MS Access;
2. Пароль (Password) – если база имеет пароль, то его необходимо указать;
3. Пустой пароль (Blank password) – если пароль не нужен, то здесь желательно поставить галочку;
4. Позволять сохранять пароль (Allow saving password). Если здесь поставить галочку, то пароль может быть сохранён.
Как только выберешь базу данных, нажми кнопку Test Connection, чтобы протестировать соединение. Если всё указано правильно, то ты должен увидеть сообщение «Test connection succeeded». Всё, можно нажать ОК, чтобы закрыть окно создания строки подключения и ещё раз ОК, чтобы закрыть окно редактора строки подключения. Теперь в свойствах компонента ADOConnection отключи свойство LoginPrompt, выставив его в False. Это нужно для того, чтобы при каждом обращении к базе нас не грузили окном ввода пароля. А теперь выставим свойство Connected в True, чтобы произошло соединение с базой. На этом соединение можно считать оконченным. Теперь нам надо получить доступ к созданной нами таблице «Справочник». Для этого брось на форму компонент ADOTable с закладки ADO палитры компонентов. Сразу измени его свойство Name на BookName.
- TADOTable. В этом компоненте тоже есть свойство ConnectionString и его так же можно настраивать. Почему «можно»? Да потому что, чтобы этого не делать мы поставили на форму компонент ADOConnection. Теперь мы можем указать у нашего компонента BookName в свойстве Connection, созданный нами компонент соединения с базой данных. Щёлкни по выпадающему списку в свойстве Connection и выбери там единственный пункт ADOConnection1. Теперь нам не надо заполнять свойство ConnectionString Теперь в свойстве TableName нужно выбрать имя нашей таблицы (Справочник). Всё, таблица и соединение указаны, можно подключатся. Для этого выставь свойство Active в true.
- TDataSource
Для отображения данных из таблицы надо ещё установить на форму компонент DataSource с закладки Data Access палитры компонентов. Теперь этому компоненту надо указать, какую именно таблицу он должен отображать. Для этого в свойстве DataSet нужно из выпадающего списка выбрать нашу таблицу BookTable.
- DBGrid
Всё!!! Все приготовления готовы, можно приступать к реальному отображению данных. Самый простой способ отобразить таблицу – установить компонент DBGrid. Это компонент-сетка, которая может отображать данные в виде таблицы. В этом же компоненте можно добавлять, удалять и редактировать строки нашей таблицы. И последний этап создания нашего приложения – связывание компонента сетки с компонентом отображения таблицы. Для этого в свойстве DataSuorce компонента DBGrid
нужно указать созданный нами компонент DataSource1. Вот до какой степени Delphi упрощает процесс программирования баз данных, что даже программировать ничего не надо. Попробуй запустить этот пример и создать несколько строк, отредактировать уже существующие и удалить что-нибудь. Для вставки строки используй клавишу Ins, а для удаления Ctrl+Del.
Свойства компонента TADOTable
Компонент TADOTable имеет множество полезных свойств. Большинство из них просты в использовании, поэтому чтобы не писать множество примеров на их использование, я здесь кратко опишу основные из них. В дальнейшем с какими-то мы познакомимся на практике, а какие-то останутся для тебя как дополнительная информация к размышлению.
MasterSource - в этом свойстве указывается главная, по отношению к текущей таблица. Мы рассмотрим это свойство достаточно подробно и на практике, когда будем рассматривать связанные таблицы.
ReadOnly – если это свойство равно true, то таблицу нельзя редактировать. В этом случае данные только отображаются. Обязательно устанавливай это свойство для тех таблиц, где данные не должны изменяться и пользователь не должен вносить в них изменения.
TableDirect – это свойство отображает какой будет происходить доступ к таблице. Если этот параметр равен true то будет происходить прямой доступ к таблице по имени. Если false то незаметно для тебя будет происходить специальный SQL запрос к базе данных (о SQL запросах читай ниже). Не все базы данных позволяют работать через прямой доступ, поэтому это свойство по умолчанию равно false.
TableName – имя таблицы, данные которой мы хотим обрабатывать.
CacheSize – размер кэш памяти. Если здесь установить число 50, то при первом подключении к таблице компонент выберет первые 50 строк и поместит их в локальной памяти, что ускорит доступ к ним.
CanModify – свойство похоже на ReadOnly и указывает на возможность редактирование данных таблицы.
CommandTimeout – время ожидания выполнения команды. Когда компонент направляет команду базе данных, то он запускает таймер ожидания, по истечению которого (если команда не выполнилась) происходит сообщение об ошибке.
Connection – здесь указывается компонент TADOConnection, через который происходит подключение.
ConnectionString – строка подключения к базе данных.
CursorLocation – расположение курсора, который считывает данные и указывает текущую позицию в таблице. Курсор может находиться на сервере или на машине клиента.
CursorType – тип курсора. Тут возможен один из следующих вариантов:
- ctUnspecified расположение курсора не указано
- ctOpenForwardOnly – курсор может двигаться только вперёд.
- ctKeyset при этом курсоре изменения внесённые одним пользователем не видны остальным пользователям подключённым к этой таблице. Если с одной таблицей работают одновременно несколько пользователей, то при таком курсоре для отображения изменений других пользователей нужно отключиться от базы и подключиться к ней снова.
- ctDynamic динамический курсор, при котором изменения одного пользователя видят все остальные.
- ctStatic статический курсор. Изменения одного пользователя не видны остальным Внимание!!! Если курсор расположен на клиенте, то можно использовать только статический курсор. Не все типы курсоров могут работать с определённой базой данных. Одна база данных может поддерживать один тип, а другая может поддерживать всё.
Filter – строка фильтра.
Filtered – является ли таблица фильтруемой. Если здесь установить false то строка фильтра (filter) игнорируется.
IndexFieldNames – имя индексированной колонки. Индексы используются для сортировки данных или для связи между таблицами.
RecNo - номер текущей выделенной строки.
RecordCount – количество строк в таблице.
Sort - строка, в которой указывается тип сортировки. Например, для сортировки по полю «Телефон» сюда нужно записать строку: ADOQuery1.Sort := 'Телефон ASC'. Оператор ASC говорит о том, что надо сортировать в порядке возрастания. Оператор DESC говорит о сортировании в порядке убывания.
Active – если это свойство равно true, то таблица открыта.
AggFields – здесь хранятся все агрегатные поля.
AutoCalcFields – если здесь true, то надо автоматически пересчитывать поля.
Bof – на это свойство влиять нельзя, но если оно равно true, то мы находимся в начале файла.
Bookmark - здесь находиться текущая закладка.
Eof - на это свойство влиять нельзя, но если оно равно true, то мы находимся в конце файла.
FieldCount – здесь хранится количество полей в таблице.
Fields – через это поле можно получить доступ к значениям полей. Допустим, что тебе надо узнать, какое значение храниться в 4-м поле. Для этого нужно написать Table.Fields.Fields[4].AsString. Метод AsString говорит о том, что нам надо получить значение в виде строки. Это простой метод, но я его не люблю использовать. В течении всей книги я буду обращаться к полям по именам.
FieldValues – с помощью этого свойства можно легко получить доступ к любому значению указанного поля. Имя поля нужно указывать в квадратных скобках. Например, Table1.FieldValues[‘Телефон’]:='3346598';
FilterOption – настройки фильтра. Здесь можно указывать следующие параметры:
- foCaseInsensitive фильтр будет не чувствителен к регистру.
- foNoPartialCompare если стоит этот параметр, то сравнения будут происходить с точной копией указанного значения в фильтре. Если параметр не казан, то в фильтр будут попадать строки содержащие значение в фильтре, но не являющиеся его точной копией. Например, если в фильтре указано показывать слова «са», то в фильтр попадут все слова начинающиеся на «са» (самолёт, самокат).
Modified – если это свойство равно true, то в таблице были внесены изменения.
Методы компонента TADOTable
Как видишь, свойств очень много и большинство из них очень полезные. В течении этой главы я буду знакомить тебя с ними и мы увидим большинство свойств на практике. А теперь приготовься получить описание громадного количества методов. Они не менее полезны, и мы так же будем знакомиться с большинством из методов на практике
BookmarkValid – этот метод проверяет правильность закладки. В качестве единственного параметра нужно указать закладку типа TBookmark и если она является действительной, то результатом будет true.
CancelUpdates - отменить обновления сохранённые в кэш памяти
CompareBookmarks.- сравнение двух закладок. У метода два параметра типа TBookmark. Эти две закладки сравниваются. Если закладки равны, то результат равен нулю. Если первая меньше второй, то результат будет –1. Если первая больше второй, то результат равен единице.
DeleteRecords – удалить записи. У метода один параметр – какие записи удалять. Ты можешь указать следующие значения в качестве параметра:
- arCurrent удалить только текущую запись.
- arFiltered удалить записи удовлетворяющие установленному фильтру.
- arAll – все записи.
- arAllChapters удалить записи во всех разделах ADO.
Append – добавить новую запись в конец таблицы.
Cancel – отменить изменения текущей строки, если изменения ещё не были сохранены с помощью метода Post.
Close – закрыть таблицу.
Delete – удалить текущую строку.
Edit – перейти в режим редактирования. После этого можно изменять значения полей
FieldByName – найти поле по имени. В качестве единственного параметра нужно указать имя поля виде строки и в результате получаем ссылку на поле в виде объекта TField
First – перейти на первую строку в таблице.
Insert – вставить новую строку в таблицу.
IsEmpty – если метод вернёт true то в таблице нет записей.
Last - перейти на последнюю запись в таблице.
Next – перейти на следующую запись.
Post – принять все изменения.
Prior - двигаться на предыдущую запись в таблице.
Refresh – обновить информацию о данных.
UpdateRecord – обновить текущую запись.
Задания:
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.