PDA

Просмотр полной версии : Подключение БД в Delphi


AL Capone
23.07.2008, 11:20
================================================== ==================================================
В данной статье будет рассмотрен пример подключения базы данных в Delphi, с помощью технологии ADO, БД MS Access.
================================================== ==================================================

Перед тем подключить БД нужно сначала ее создать. Открываем MS Access.
Можете создать с помощью мастера, мне удобней в режиме конструктора.

Вводим имя поля и тип данных которое оно будет содержать.
Я ввел: имя поля - log, pass. Тип данных у обоих полей текстовый.
Ключевым полем выбираем log.

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

Подключение.

Запускаем Delphi. В кладке ADO есть компонент ADOConnection, помещаем его на форму.
Этот компонент служит для подключения БД в программу. Выбираем свойство ConnectionString
в появившемся окне жмем кнопку Build. Далее нужно выбрать драйвер доступа к БД.

http://img149.imageshack.us/img149/7792/47220732gn2.gif
рис(1)

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

Если все прошла удачно, то появится следующее сообщение:

http://img149.imageshack.us/img149/8306/35278319sp2.gif
рис(2)

В противном случаем переподключите базу.
Жмем ОК. Подключение базы закончено.

В компоненте ADOConnection свойство LoginPrompt устанавливаем в false.
Иначе, каждый раз будет выходить табличка для ввода пароля доступа к базе.
Теперь мы можем с ней оперировать.

Работа с базой.

Помещаем на форму компонент ADOQuery. Этот компонент служит, для составления запросов SQL в базу.
В свойстве Connection, выбираем ADOConnection1.
Отрываем свойство SQL. В появившееся окно вводим запрос.

Запрос:
SELECT *
FROM users

Свойство Active устанавливаем в true.

Далее, из кладки Data Access, помещаем компонент DataSource, этот компонент служит для отображения содержимого базы.
В свойстве DataSet выбираем ADOQuery1.

Кладка DataControls, компонент DBGrid, это таблица, которая собственно и отображает базу.
В свойстве DataSource выбираем DataSource1. После этого на этом компоненте должны появится поля базы.

http://img371.imageshack.us/img371/9407/96955396rr5.gif
рис(3)

Добавление записи.

Поместим на форму 2 Edit'a, одно для того, чтобы ввести логин, а другое для пароля, также поместим Button.

Прописываем процедуру Button1Click:

procedure TMain_Form.Button1Click(Sender: TObject);
var query:string;
begin
query:='INSERT INTO users VALUES('''+Edit1.Text+''','''+Edit2.Text+''');';//**Запрос для добавления записи
ADOQuery1.SQL.Clear;//**Очистка предыдущего запроса.
ADOQuery1.SQL.Text:=query;//**Заносим запрос
ADOQuery1.ExecSQL;//**Выполнения запроса
//**Отображения содержимого базы
ADOQuery1.Active:=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM users ORDER BY log;');
ADOQuery1.Active:=true;
end;

Другие запросы создаются аналогично.

23.07.08

dos999
23.07.2008, 11:39
'INSERT INTO users VALUES('''+Edit1.Text+''','''+Edit2.Text+''');'
подобный текст пихать в SQL запрос несовсем правильно... а что если понадобаться запихать дату?
лутше делать через параметры, ИМХО гораздо надёжнее:
INSERT INTO users VALUES(:par1,:par1);
а потом этим параметрам присваиваем значения

ADOQuery1.Parameters.ParamByName('par1').Value := Edit1.Text;
ADOQuery1.Parameters.ParamByName('par2').Value := Edit2.Text;