Как связать базу данных с делфи

Обновлено: 23.04.2024

Имеется бд в аццессе. Мне нужно связать эту бд со своей прогой и получить данные с таблиц. Связывание бд происходит при помощи ADOConnection. Данные получить можно при помощи ADOQuery. Но как? Допустим у меня есть таблица в бд table1. В ней 2 поля - id(integer), name(string). В делфи я создаю соответствующий тип данных:

Далее я создаю массив переменных этого типа. Как мне выполнить запрос SELECT * FROM table1; и как занести полученные данные в массив?

Как связать 2 проекта Дельфи?
привет всем) у меня боооооольшой вопрос. можно но ли связать 2 проекта. 2 отдельных программ. в.

Связать базу данных с Дельфи
Есть БД акцес. надо связать с делфи. Я новичок в этом деле, желательно всё подробно, чтобы я понял)

как связать дельфи с html
мне надо связать большой ворд документ с рисунками дельфи. и я решила это связать с помощью html-a.

Импорт кода из Дельфи-файла без установленного Дельфи
Есть файлы проекта делфи, как без установленного делфи просмотреть код программы? Или может кто то.

1. Тема не в том разделе.
2. У ADOQuery свойство SQL. Назвали наверно не однозначно, поэтому Вы не можите понять куда сунуть

3. Зачем Вам массив записей.
4. Если Вы в такой глуши нужно открыть книгу или бонально зайти на youtube.

циклом пройтись по бд и считать в массив все данные

Добавлено через 25 секунд
написал бы пример и дал бы пример, нету аксесса на компе больше

1. Создаем БД в аксцессе и сохраняем её как база 2002-2003 офиса.

2. На форму ложите:
ADOConnection
ADOQuery
DBGrid
DataSource

3. Настраиваем АDOConnection1
ConnectionString (выбрать Build, потом Microsoft Jet 4.0, в строке № 1 выбрать через обзор вашу базу).
LogintPromt = false
Connected = true

4. Настраиваем ADOQuery1
Connection = АDOConnection1
SQL вписать следующее SELECT * FROM table1;
Active = true

5. Настраиваем DataSource1
DataSet = ADOQuery1

6. Настраиваем DBGrid1
DataSourse = DataSource1

Если все сделали правильно - увидите содержимое таблицы table1

Всё. Запускаем (F9).
Прыгаем, радуемся, хлопаем в ладоши

Если не получится - сделать ВСЁ как написано еще раз.
Если и тогда не выйдет - вот готовое решение
Proba.7z

Петррр, обязательно нужно умничать?) Я знаю, что есть свойство SQL. Я не знаю как потом получить доступ к данным. Мне нужен массив с переменными, которые хранятся в бд. Кажись я четко и понятно это написал. Видимо не достаточно понятно для вас. Я работаю и у меня нету времени плотно изучать данный вопрос. Мне его нужно 1 раз сделать и сдать. И вряд ли я вообще буду работать с подобными программами. Мне интересна другая область программирования и другие типы программ.

Добавлено через 1 минуту
Андрей Борисови, благодарю. Попытаюсь приспособить к своей цели. Но мне нужно именно занести эти данные в массив.

В данной статье рассмотрим как можно реализовать программу, которая сможет работать с данными, размещенными в файле СУБД MS Access. Программе необходимо подключиться к внешнему файлу БД. Затем, в ней должна быть реализована форма, в которой пользователь сможет просматривать записи из таблицы БД, добавлять новые записи, удалять или редактировать их.

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

Чтобы организовать работу программы с БД, потребуется следующие компоненты:

- ADOConnection – используется для подключения к БД (закладка палитры ADO, в некоторых версиях dbGO);

- ADOTable – связывается с конкретной таблицей БД (закладка ADO);

- DataSource – компонент, используется как связка данных из таблиц, с отображающими и управляющими компонентами Delphi (закладка Data Access);

- DBGrid – таблица, позволяющая вывести содержимое таблицы БД на пользовательскую форму (закладка Data Controls);

- DBNavigator – кнопочная панель, способная управлять данными в привязанной к ней таблице (закладка Data Controls).

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

Свойство ConnectionString компонента ADOConnection

Свойство ConnectionString удобно настраивается в специальных окнах. Открываем редактор свойства ConnectionString в инспекторе объектов кнопкой «…» . В появившемся окне оставляем все настройки как они были по умолчанию и нажимаем кнопку «Build…» .

Получаем еще одно окно с несколькими закладками.

В первой закладке ;Поставщик данных» выбираем в списке «Microsoft.Jet.OLEDB.4.0» и жмем «Далее >>» .

Во второй закладке «Соединение ; в поле «1. Выберете или введите имя базы данных:» жмем «…» и привычным окном выбираем нужный файл БД. Здесь стоит отметить, что при выборе адреса, будет указан полный путь, начиная от корневой директории. При таком указании директории, становится неудобно использование программы на другом компьютере, так как приходится создавать все директории, что и на компьютере, где была создана программа. Чтобы не сталкиваться с такой проблемой, удобней указать относительный путь. Если в этом поле указать только имя файла БД, то программа будет открывать ее из той же директории, где она находится, в какую бы директории ее не разместили. Естественно файл БД должен находиться в той же папке, куда вы сохраняете свой проект Delphi.

Нажимаем кнопку «ОК» .

Снова видим предыдущее окно, но уже с заполненной строкой. Снова нажимаем «ОК» . Все, настройка свойства ConnectionString завершена.

Свойство LoginPrompt компонента ADOConnection

Это свойство логического типа определяет, будет ли при подключении к БД запрашиваться пароль. Пока никакие пароли не нужны, поэтому, чтобы оно не мешало при работе с программой ставим ему значение False.

Свойство Connected компонента ADOConnection

Свойство Connection компонента ADOTable

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

Свойство TableName компонента ADOTable

Выбираем из списка необходимую таблицу из БД.

Свойство Active компонента ADOTable

Свойство DataSet компонента DataSource

Из списка выбираем нужную таблицу, если их несколько. Обычно для удобства каждой таблице в БД соответствует своя пара ADOTable + DataSource.

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

Свойство DataSource компонентов DBGrid и DBNavigator

Свойство настраивается выбором из списка нужного компонента DataSource.

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


Рисунок: Подключение Delphi с БД Access

В этой статье рассмотрим задачу выборки записей из БД, применив компонент ADOQuery. Подключение и взаимодействие с базой данных уже рассмотрено в одной из предыдущих статей. Поэтому здесь на этом останавливаться не будем.

Для работы с запросами в Delphi по технологии ADO используется компонент ADOQuery. Что касается подключения компонента, работа с ним подобна работе с ADOTable. Ему так же необходимо указать ADOConnection, подключенный к БД (можно так же настроить свойство подключения к БД ConnectionString). Для отображения на форме данных ему так же нужен компонент DataSource, подключаемый к компонентам отображения и управления данными из закладки палитры Data Controls (DBGrid, DBEdit и другие).

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

Статический запрос

Для получения содержимого таблицы следует указать следующие поля ADOQuery:

Connection – выбрать из списка настроенное подключение к БД.

SQL – ввести текст любого SQL-запроса, например: "SELECT * FROM mytable".

Active – присвоить значение True.

Если при присвоении свойству Active, сведений об ошибках не было выведено, значит все выполнено правильно и далее можно пользоваться ADOQuery, как обычной таблицей для вывода его данных (вывод осуществляется аналогично таблице через компонент DataSourcе, например, в DBGrid).

Плюс запроса в том, что в нем можно сформировать нужную выборку сразу из нескольких таблиц. Здесь можно так же применить сортировку и группировку данных.

Динамическое изменение запроса во время исполнения программы

Если в процессе работы программы, текст SQL-запроса нужно переписывать, как, например, при указании условия выборки, то можно просто программно управлять режимом исполнения запроса и содержимым его поля SQL.

Для этого применяется следующий код:

Программная работа с результатами запроса

Если результат запроса нужно не просто вывести, а выполнять с ним какую-то работу непосредственно в коде, то обратится к ним через свойство Fields. Например, код:

выведет во всплывающем окне содержимое первого поля текущей записи.

Fields[номер поля] – указывает номер столбца в сформированной запросом таблице. Самое первое будет нулевое.

AsString – указывает, что тип возвращаемого значение будет строковый. Аналогично можно указать AsInteger, чтобы получить числовое значение.

Перемещение по записям выполняется аналогично программному переходу в таблицах:

Дана база данных, сформированная средствами СУБД Microsoft Access. База данных расположена на диске по такому пути:

Структура базы данных и связи между таблицами изображены на рисунке 1.

01_02_00_008_01

Рис. 1. Схема связей между таблицами базы данных

Необходимо осуществить подключение данной базы данных к приложению Windows.

Выполнение

1. Запустить Delphi

Пример создания и сохранения приложения в Delphi подробно описывается здесь.

Создать форму и сохранить проект под произвольным именем.

2. Компоненты для работы с базой данных

Из вкладки « dbGo » палитры инструментов выбираем компоненты TADOConnection и TADOTable .
Из вкладки « Data Access » выбираем компонент TDataSource (рис. 2).
Выносим эти компоненты на форму приложения.

01_02_00_008_02_

Рис. 2. Компоненты для соединения с базой данных

Компоненты из палитры «dbGo» предназначены для работы с базами данных по технологии ADO , которая хорошо подходит для базы данных Microsoft Access.

Вместо компонента TADOQuery можно использовать компонент TADOTable . Можно также совмещать эти компоненты.

С целью визуализации данных из таблиц используется компонент TDBGrid из палитры Data Controls . Он отображает данные в некоторой таблице базы данных. После выноса этого компонента на форму, вид окна проектирования примет приблизительно следующий вид (рис. 3).

01_02_00_008_03_

Рис. 3. Компонент DBGrid1 для отображения данных из базы данных

3. Настройка компонент

Существует два варианта подключения к базе данных с использованием вышеупомянутых компонент (рис. 4).

01_02_00_008_04r

Рис. 4. Способы подключения к файлу базы данных

Во втором случае подключение осуществляется через дополнительный компонент ADOConnection1 . Этот способ есть более обобщенным случаем и лучше подходит для случаев, когда несколько компонент типа TADOTable или TADOQuery используются для доступа к одному соединению ADOConnection1 .

Выбираем второй способ настройки.

4. Строка соединения ConnectionString

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

Осуществим настройку свойства ConnectionString компонента ADOConnection1 . Таким же образом настраивается свойство ConnectionString компонента ADOTable1 .

Сначала выделим компонент ADOConnection1 . В Object Inspector выбирается свойство ConnectionString (рис. 5).

01_02_00_008_05_

Рис. 5. Свойство ConnectionString компонента ADOConnection1

В результате откроется окно « Form1.ADOConnection1 ConnectionString » (рис. 6).

Предлагается 2 варианта подключения:

  • Use Data Link File ;
  • Use Connection String .

В первом случае есть возможность подключения к базе данных путем выбора файлов типа Microsoft Data Link с расширением « *.udl «. Эти файлы служат для связи с данными по технологии ADO .

Для ознакомления используем второй способ « Use Connection String «. Выбираем кнопку « Build… «.

01_02_00_008_06_

Рис. 6. Способы выбора источника соединения

В результате предыдущего выбора откроется окно « Свойства связи с данными » (рис. 7).

01_02_00_008_07_

Рис. 7. Окно «Свойства связи с данными»

В этом окне выбираем поставщика OLE DB . Для работы с базами данных Microsoft Access лучше всего подходит поставщик « Microsoft Jet 4.0 OLE DB Provider «.

Делаем клик на кнопке « Далее >> «.

На следующем этапе нужно выбрать файл базы данных (рис. 8). Согласно с условием задания файл базы данных размещается по следующему пути:

Кликаем на кнопке « … » и выбираем файл базы данных.

01_02_00_008_08_

Рис. 8. Вкладка «Подключение» с выбранным файлом базы данных

01_02_00_008_09_

Рис. 9. Тестирование подключения к файлу базы данных

После этого выбираем « ОК «. Окно « Form1.ADOConnection1 ConnectionString » имеет вид (рис. 10).

01_02_00_008_10_

Рис. 10. Окно « Form1.ADOConnection1 ConnectionString »
с выбранным источником соединения

В окне на рисунке 10 выбираем « ОК «. После этого свойство ConnectionString компонента ADOConnection1 будет сформировано.

5. Свойство LoginPrompt компонента ADOConnection1

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

01_02_00_008_11_

Рис. 11. Свойство LoginPrompt компонента ADOConnection1

6. Связывание компонент между собой

Теперь можно связать компоненты между собой по схеме, изображенной на рис. 4 а).
Для этого, используя Object Inspector , необходимо выполнить следующие действия:

  • в компоненте ADOTable1 свойство Connection нужно установить в значение ADOConnection1 ;
  • в компоненте DataSource1 свойство DataSet установить в значение ADOTable1 ;
  • в компоненте DBGrid1 свойство DataSource установить в значение DataSource1 .
7. Выбор таблицы Students и ее отображение

После выполненных операций имеем связь приложения с базой данных.

Теперь нужно задать таблицу или запрос для вывода в DBGrid1 .
Если использовать компонент TADOQuery , то для вывода используется строка запроса на языке SQL . В этом случае данные в DBGrid1 могут отображаться сразу из нескольких таблиц.

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

Выберем для примера таблицу Students .

Для этого с помощью Object Inspector в компоненте ADOTable1 нужно:

  • в свойстве «TableName» выбрать таблицу Students ;
  • свойство Active установить в значение «true» .

В результате выполненных действий данные сразу отобразятся в компоненте DBGrid1 (рис. 12).

Описывается процесс создания приложения, которое используется для исследования SQL -запросов к базе данных.

Условие задачи

Задана база данных «01_02_00_011_mydb.mdb«, содержащая три таблицы: Students , Marks , Groups .

Структура таблиц следующая.

01_02_00_011_table01r

01_02_00_011_table02r

01_02_00_011_table03r

Таблицы связаны между собою по такой схеме (рис. 1):

01_02_00_011_01_

Рис. 1. Схема связей между таблицами

Разработать приложение, которое будет формировать SQL -запросы к базе данных.

Выполнение

Сохранить проект в произвольной папке. Рекомендуется скопировать файл базы данных «01_02_00_011_mydb.mdb» в папку, в которой размещаются рабочие файлы нашего проекта.

2. Построение формы.

Сначала нужно увеличить размер формы с помощью «мышки».

Следующим шагом размещаем на форме такие компоненты:

– из вкладки dbGo компонент TADOConnection (рис. 2);

– из вкладки dbGo компонент TADOQuery (рис. 2);

– из вкладки Standard компоненты типа TButton и TMemo (рис. 3);

– из вкладки Data Controls компонент типа TDBGrid (рис. 4);

– из вкладки Data Access компонент типа TDataSource (рис. 5).

01_02_00_011_02_

Рис. 2. Компоненты TADOConnection и TADOQuery

01_02_00_011_03_

Рис. 3. Компонент типа TMemo на форме приложения

01_02_00_011_04_

Рис. 4. Компонент типа TDBGrid

01_02_00_011_05_

Рис. 5. Компонент типа TDataSource

В результате выполненных действий автоматически будут созданы объекты-переменные с такими именами: ADOConnection1 , ADOQuery1 , Memo1 , DBGrid1 , DataSource1 .

  1. Подключение базы данных к приложению.

Чтобы подключить базу данных к приложению нужно вызвать команду « Edit ConnectionString » из контекстного меню, что вызывается кликом правой кнопкой мышки на компоненте ADOConnection1 (рис. 6). Процесс подключения к базе данных состоит из нескольких шагов, представлен в виде мастера и подробно описан здесь.

01_02_00_011_06_

Рис. 6. Вызов мастера подключения к базе данных

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

С помощью Object Inspector устанавливаем такие свойства компонент:

– в компоненте ADOConnection1 свойство « LoginPrompt » установить в значение false (это необходимо во избежание запросов введения пароля во время доступа к базе данных);

– в компоненте Button1 свойство Caption установить в значение « Execute query » (выполнить запрос);

– в компоненте ADOQuery1 свойство Connection установить в значение ADOConnection1 ;

– в компоненте DataSource1 свойство DataSet установить в значение ADOQuery1 ;

– в компоненте DBGrid1 свойство DataSource установить в значение DataSource1 .

После настройки свойств компонент главная форма приложения будет иметь вид как показано на рисунке 7.

01_02_00_011_07_

Рис. 7. Главная форма приложения после настройки компонент

Теперь база данных подключена к приложению и можно создавать программный код активизации формы и клика на кнопке « Execute query «.

  1. Настройка свойства SQL компонента ADOQuery1 .

Для ввода текста SQL -запроса сначала нужно вызвать редактор кода на языке SQL компонента ADOQuery1 (рис. 8).

01_02_00_011_08_

Рис. 8. Свойство SQL компонента ADOQuery1

В результате откроется окно редактора кода (рис. 9). В этом окне нужно набрать следующий текст:

01_02_00_011_09_

Рис. 9. Окно редактора кода на языке SQL

  1. Программирование события активизации основной формы OnActivate .

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

Выделяем главную форму приложения и вызываем событие OnActivate из вкладки Events в Object Inspector (рис. 8).

01_02_00_011_10_

Рис. 10. Вызов события OnActivate

Листинг процедуры обработки события следующий.

  1. Программирование события закрытия формы OnClose .

Событие OnClose формы вызовется в момент ее закрытия. Поэтому, здесь нужно вписать код закрытия соединения с базой данных.

В событие закрытия формы вносим следующий текст.

В этом коде делается проверка на наличие открытия набора данных, и если этот набор открытый, то он закрывается методом Close в компоненте ADOQuery1 .

  1. Программирование события OnClick компонента Button1 .

Чтобы дать команду на выполнение SQL -запроса с Memo1 , нужно запрограммировать событие OnClick компонента Button1 .

Листинг процедуры обработки события следующий.

После выполненных действий, приложение можно запустить на выполнение. Результат работы приложения изображен на рисунке 11. Как видно из рисунка 11, отображаются все поля из таблицы Student (рис. 11).

Текст SQL -запроса формируется в компоненте Memo1 , а результат его выполнения отображается в компоненте DBGrid1 .

01_02_00_011_11_

Рис. 11. Результат выполнения приложения

Создадим другой SQL -запрос, который выводит студентов, которые имеют оценку 4 по математике.

Результат выполнения приложения приведен на рисунке 12.

01_02_00_011_12_

Рис. 12. Результат выполнения приложения

Читайте также: