Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Delphi и БД.doc
Скачиваний:
73
Добавлен:
11.04.2015
Размер:
471.04 Кб
Скачать

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

Составим программу, которая будет работать с базой данных MS Access. Как уже говорилось, для такой разработки лучше всего использовать ADO. Давайте напишем наше первое приложение для работы с базой данных.

Создайте новый проект. Теперь поместите на форму компонент ADOConnection с вкладки ADO палитры компонентов. Настроим соединение с сервером, которое должно быть указано в свойстве ConnectionString. Для этого надо дважды щелкнуть кнопкой мыши по строке connectionstring (или дважды щелкнуть по самому компоненту). Перед вами открывается окно, показанное на рис. 14.4. Здесь перед нами стоит выбор:

1) использовать специальный файл (Use Data Link File);

2) использовать строку подключения (Use Connection String).

Рис. 14.4. Окно создания подключения к базе

Второе, на мой взгляд, более предпочтительно, поэтому рассмотрим, как создать строку подключения. Для этого щелкните мышью по кнопке Build.

Перед нами откроется еще одно окно, показанное на рис. 14.5.

Рис. 14.5. Окно создания строки подключения

На вкладке Поставщик данных (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) зависит от выбранного драйвера.

В нашем случае она должна выглядеть, как показано на рис. 14.6.

арСвойства связи с данными

Рис. 14.6. Вкладка Подключение

Первым делом, в строке Выберете или введите имя базы данных (Select or enter a database name), надо ввести имя базы данных (при необходимости и путь). Если база данных будет располагаться в той же директории, что и исполняемый файл приложения, то путь указывать не надо.

( Совет )

Храните базы в одном каталоге с исполняемыми (программными) файлами. Если вы будете хранить файлы отдельно от исполняемого, то вам придется указывать полный путь, а это может вызвать проблемы при переносе программы на другой компьютер. Ведь там программа будет искать базу по указанному пути, который может измениться. Если хотите держать файлы в другом каталоге, то указывайте относительный путь (относительно текущего каталога).

Чуть позже мы узнаем, как самим сгенерировать строку подключения и избавиться от использования окна и зависимости от путей.

Примечание

Чтобы легче было выбрать файл базы данных, необходимо щелкнуть мышью по кнопке с точками справа от строки ввода.

Теперь заполним следующие поля.

- Пользователь (User name): Значение поля можно оставить по умолчанию, если не задано иное при создании базы в MS Access.

- Пароль (Password). Если база имеет пароль, то его необходимо указать.

- Пустой пароль (Blank password). Если пароль не нужен, то здесь желательно поставить галочку.

- Разрешить сохранение пароля (Allow saving password). Если здесь поставить галочку, то пароль может быть сохранен. Если нет, то при каждом запуске программы будет появляться окно с просьбой ввести пароль.

Как только вы выберете базу данных, нажмите кнопку Проверить подключение (Test Connection), чтобы протестировать соединение. Если все указано правильно, то должно появиться сообщение Тестирование соединения прошло удачно (Test connection succeeded). Все, можно нажать ОК, чтобы закрыть окно создания строки подключения. Затем еще раз нажать ОК, чтобы закрыть окно редактора строки подключения (см. рис. 14.5).

Продолжим настройку приложения. Теперь в свойствах компонента ADOConnection отключите СВОЙСТВО LoginPrompt, выставив его В false. Это нужно для того, чтобы при каждом обращении к базе не происходил вызов окна ввода пароля. Далее выставим свойство connected в true, чтобы произошло соединение с базой. На этом соединение можно считать оконченным. Теперь нам надо получить доступ к созданной таблице Справочник. Для этого поместим на форму компонент АоотаЫе с вкладки ADO палитры компонентов. Сразу измените его СВОЙСТВО Name на BookTable.

В этом компоненте тоже есть свойство connectionstring, и его также можно настраивать. Почему — можно. Да потому что, для того, чтобы этого не делать, мы установили на форму компонент ADOConnection. Теперь можно указать у нашего компонента BookName в свойстве connection, созданный нами компонент соединения с базой данных. Щелкните по выпадающему списку в свойстве connection и выберите там единственный пункт ADOConnectionl. Теперь не надо заполонять свойство Connectionstring.

В свойстве TabieName нужно выбрать имя нашей таблицы (Справочник). Все, таблица и соединение указаны, можно подключатся. Для этого выставьте СВОЙСТВО Active в true.

Для отображения данных из таблицы надо установить на форму компонент DataSource с вкладки Data Access палитры компонентов. Теперь этому компоненту надо указать, какую именно таблицу он должен отображать. Для этого в свойстве DataSet нужно из выпадающего списка выбрать компонент BookTable, который связан с нашей таблицей Справочник.

Все приготовления готовы, можно приступать к реальному отображению данных. Самый простой способ отобразить таблицу — установить компонент DBGrid. Этот компонент — сетка, которая может отображать данные в виде таблицы. В этом же компоненте можно добавлять, удалять и редактировать строки нашей таблицы.

Рис. 14.7. Форма приложения

И последний этап создания приложения — связывание компонента сетки с компонентом отображения таблицы. Для этого в свойстве DataSuorce компонента DBGrid нужно указать созданный нами компонент Datasourcei. Вот теперь приложение готово (рис. 14.7). Может быть, вы не заметили, но мы не написали ни одной строчки кода. Вот до какой степени Delphi упрощает процесс программирования баз данных, что даже программировать не надо.

Попробуйте запустить этот пример, а затем создать несколько строк, отредактировать уже существующие или удалить что-нибудь. Для вставки строки используй клавишу <Ins>, а для удаления — сочетание клавиш <Ctrl>+<Del>.

Примечание

14.3.1. Свойства компонента TADOTable . • -

Компонент TADOTable имеет множество полезных свойств. Большинство из них просты в использовании. В связи с этим, ;чтобы не писать большое количество примеров, кратко рассмотрим основные из этих свойств. В дальнейшем с некоторыми мы познакомимся на практике.

- Mastersource — в этом свойстве указывается главная по отношению к текущей таблица. Мы рассмотрим это свойство достаточно подробно, когда будем изучать связанные таблицы.

- Readonly — если это свойство равно true, то таблицу нельзя редактировать. В этом случае данные только отображаются. Обязательно устанавливайте это свойство для тех таблиц, где данные не должны изменяться и пользователь не должен вносить в них изменения.

- TableDirect — это свойство отображает, как будет происходить доступ к таблице. Если этот параметр равен true, то будет происходить прямой доступ к таблице по имени. Если false, то незаметно для вас будет происходить специальный SQL-запрос к базе данных (о SQL-запросах читайте ниже). Не все базы данных позволяют работать через прямой доступ, поэтому это свойство по умолчанию равно false.

- TableName — имя таблицы, данные которой мы хотим обрабатывать.

- cachesize — размер кэш-памяти. Если здесь установить число 50, то при первом подключении к таблице компонент выберет первые 50 строк и разместит их в локальной памяти, что ускорит доступ к ним. Остальные строки будут подгружаться с сервера по мере надобности.

- CanModify — свойство похоже на Readonly и указывает на возможность редактирования данных таблицы.

- commandTimeout — время ожидания выполнения команды. Когда компонент направляет команду базе данных, то он запускает таймер ожидания, по истечению которого (если команда не выполнилась) происходит сообщение об ошибке.

- Connection — здесь указывается компонент TADOConnection, через который происходит подключение.

- connectionstring — строка подключения к базе данных.

- CursorLocation — расположение курсора, который считывает данные и указывает текущую позицию в таблице. Курсор может находиться на сервере или на машине клиента.

- CursorType — тип курсора. Тут возможен один из следующих вариантов:

• ctunspecif led — расположение курсора не указано;

• ctOpenForwardOnly — курсор может двигаться только вперед;

"• ctKeyset — изменения, внесенные одним пользователем, не видны остальным пользователям, подключенным к этой таблице;

^ Примечание

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

ctoynamic — динамический курсор, при котором изменения одного пользователя видят все остальные;

ctstatic — статический курсор, при котором изменения одного пользователя не видны остальным.

Внимание

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

- Filter — строка фильтра.

- Filtered — является ли таблица фильтруемой. Если здесь установить false, то строка фильтра (filter) игнорируется.

- indexFieidNames — имя индексированной колонки. Индексы используются для сортировки данных или для связи между таблицами.

- RecNo — номер текущей выделенной строки.

- RecordCount — количество строк в таблице.

- sort — строка, в которой указывается тип сортировки. Например, для сортировки по полю Телефон нужно записать строку:

ADOQueryl.Sort: = 'Teneij>oH АЗС'. Оператор АЗС говорит о том, что надо Delphi и базы данных 439

сортировать в порядке возрастания. Оператор DESC говорит о сортировке в порядке убывания.

- Active — если это свойство равно true, то таблица открыта.

- AggFieids — здесь хранятся все агрегатные поля.

- AutoCaicFieids — если здесь true, то надо автоматически пересчитывать поля.

- Bof — на это свойство влиять нельзя, но если оно равно true, то мы находимся в начале файла.

- Bookmark — здесь находится текущая вкладка.

- Eof — на это свойство влиять нельзя, но если оно равно true, то мы находимся в конце файла.

- FieidCount — здесь хранится количество полей в таблице.

- Fields — через это поле можно получить доступ к значениям других полей. Допустим, что вам надо узнать, какое значение храниться в 4-м поле. Для ЭТОГО Нужно написать Table.-Fields. Fields [4] .AsString. Метод AsString говорит о том, что надо получить значение в виде строки.

В книге используется обращение к полям по именам.

- FieidVaiues — с помощью этого свойства можно легко получить доступ к любому значению указанного поля. Имя поля нужно указывать в квадратных скобках. Например, Tablel.FieidVaiues['Телефон']: = '3346598';.

- FilterOption — настройки фильтра. Здесь можно указывать следующие параметры:

• FoCaseinsensitive —фильтр будет нечувствителен к регистру;

• foNoPartiaiCompare —если стоит этот параметр, то сравнения будут происходить с точной копией указанного в фильтре значения.

^ Примечание

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

Например, если в фильтре указано показывать слова "са", то в фильтр попадут все слова, начинающиеся на "са" (самолет, самокат).

- Modified — если это свойство равно true, то в таблице были внесены изменения.

1

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]