class DarkRaha extends com { // разработка приложений
            String a="Главная" b="Контакты" c="О сайте"
};

JDBC

загрузка драйвера
соединение с БД
выполнение запросов
параметризованные запросы

ODBC

ODBC
ODBC для wxWidgets
JDBC - ODBC мост

ADO

ADO

VCL

VCL компоненты

PHP

PHP

DBI (perl)

dbi пример

Hibernate

Hibernate

Справка по VCL

VCL компоненты, ZeosLib

Существуют различные VCL компоненты для взаимодействия с базами данных. Некоторые специализированные как ODAC, другие работают на уровне различных интерфейсов как ADO и BDE. Однако общая схема примерно одинакова: компоненты соединения, запроса, источника данных и сетки настраиваются и связываются между собой.

Для примера рассмотрим компоненты ZeosLib. Это проект с открытым кодом и поддерживает несколько СУБД, используя их родные библиотеки. Например, если приложение работает с PostgreSQL 8.3, то ему должны быть доступны библиотеки comerr32.dll, krb5_32.dll, libiconv-2.dll, libintl-2.dll, libpq.dll. Разработчики ZeosLib также предоставляют свои модификации библиотек. Так для PostgreSQL libpq.dll можно заменить на libpq81.dll. Компоненты ZeosLib можно скачать с сайта

http://zeos.firmos.at

Если нужны модификации, то зайдите по следующей ссылке


http://zeosdownloads.firmos.at/downloads/snapshots/

и скачайте последний архив "ZEOSLIB TRUNC*.zip". Внутри будет директория lib с нужными *.dll файлами.

И так создадим обычный Delphi проект. Кинем на форму компонент TZConnection - компонент для настройки соединения. Для PostgreSQL зададим следующие свойства в редакторе свойств:

name      -> zconn (имя переменной)
protocol  -> postgresql-8 (выбираем СУБД)
database  -> postgres (имя вашей базы данных)
hostname  -> localhost (адрес вашей базы данных)
user      -> root (имя пользователя)
password  -> root1 (пароль)
connected -> true (делаем соединение в IDE)

Если соединение не будет установленно по каким-то причинам, то IDE выдаст соответствующее сообщение. Теперь кинем на форму компонент TZQuery и зададим следующие свойства:

name       -> query (имя переменной)
connection -> zconn (имя соединения)
sql        -> "select * from tblname"
active     -> true (выполняем запрос)

Теперь кинем на форму компонент TDataSource, в BDS2006 находится в группе Data Access. Зададим следующие значения свойств:

name    -> dsrc (имя переменной)
dataset -> query (имя используемого запроса)

Для отображения записей запроса кинем на форму компонент TDBGrid, в BDS2006 находится в группе Data Controls. Зададим следующие значения свойств:

name       -> grid (имя переменной)  
datasource -> dsrc (имя источника данных)

Если все правильно, то в сетке отобразятся записи запроса. Не забывайте, что свойства connected и active сбрасываются в false при изменении других свойств. Вызов хранимых процедур и функций пока делается тем же компонентом TZQuery с помощью параметризованных запросов (select для функций, call для процедур). Компонент TZStoredProc кажется пока не рабочий.

ZeosLib возможно будет интересен java-программистам, так как для абстракции здесь используется программная прослойка, прототипом которого является JDBC. Чтобы воспользоваться этой прослойкой подключите модуль ZDbcIntfs. Ниже приведен пример обработчика нажатия кнопки использующий прослойку для обновления записи в таблице.


uses ZDbcIntfs, ... // подключаем модуль прослойки

procedure TForm8.btClick(Sender: TObject);
var
iconn: IZConnection;
statement: IZPreparedStatement;

begin

// делаем еще одно соединение, 
// но уже через прослойку
iconn := DriverManager.GetConnectionWithLogin(
   'zdbc:postgresql-8://localhost:5432/postgres', 
   'root', 'root1');

// создаем параметризованный запрос
statement:=iconn.PrepareStatement
       ('update tblname set str=? where id=?');

// устанавливаем значения параметров
statement.SetString(1, 'hello world');   
statement.SetInt(2, 1); 

// обновляем запись чей id=1
statement.ExecutePrepared; 

// обновляем наш запрос для отображения
// в сетке новых данных
query.Refresh;
end;

Для отображения Unicode символов, стандартную сетку нужно заменить другой, например, одной из старых версий пакета "Tnt Unicode Controls" (сейчас это коммерчиский проект).


Рейтинг@Mail.ru