Давненько я не писал ничего в блоге, все дела , дела. 

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

Куда же без картинки.

oracle express edition

В общем нам  понадобится.

Lazarus - качать тут

Zeos - качать тут

Oracle  Express Edition 11g - качать тут 

Oracle Client - качать тут  (да . там на сайте зарегистрироваться надо что бы скачать) 

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

Oracle  Express Edition я ставил под виртуальную машиной , поскольку захламлять основную систему не комильфо, там и так есть кому ресурсы занимать. Поскольку эта версия Express то там по умолчанию 1 база данных, XE, это нам  пригодится.

Теперь про Oracle Client, его надо ставить под версию разрядности вашей программы, если у вас программа 32 бита ,то и клиент надо ставить тоже 32 бита. Иначе не будет подключения. У меня Lazarus  стоит версии 32 бита, поэтому я не буду заморачиваться с настройкой под 64 бита.

Ну уж как Lazarus ставить  и  Zeos я писать не буду, уже писал тут и тут.

В общем все я поставил , создал через  DBforge for Oracle, таблицу для экспериментов, в общем там уже есть тестовые таблицы,но они заполнены на английском, а мне нужна была кириллица.

 

Поэтому я создал такую таблицу.

CREATE TABLE LAZARUS.RUS_USERS (
  ID          NUMBER(10, 0),
  FIRST_NAME  VARCHAR2(50 CHAR),
  SECOND_NAME VARCHAR2(50 CHAR),
  BIRTHDAY    TIMESTAMP(6),
  CONSTRAINT PK_RUS_USERS_ID PRIMARY KEY (ID) USING INDEX TABLESPACE USERS STORAGE (INITIAL 64 K
                                                                                    MAXEXTENTS UNLIMITED)

 

И вбил в нее несколько русских имен.

Я пробовал подключится и получить данные через компоненты с вкладки SQLdb, но там вышла заморочка с кодировками, решать которую у меня времени не было. Поэтому только Zeos, только хардкор.

Теперь собственно к программе.

На форму я добавил 

DataSource2: TDataSource;
DBGrid2: TDBGrid;
ZConnection1: TZConnection;
ZQuery1: TZQuery;

а так же две кнопки и dbgrid.

В коде обработки событий написал.

procedure TForm1.Button3Click(Sender: TObject);
begin
  ZConnection1.User := 'Lazarus';
  ZConnection1.Database := '192.168.0.104:1521/XE'; // именно этот метод сработал, когда указывал все по отдельности не работало
  ZConnection1.Password := 'test';
  ZConnection1.Protocol := 'oracle-9i';
  ZConnection1.ClientCodepage := 'AL32UTF8'; // 
  ZConnection1.Connect;
  if ZConnection1.Connected then
    form1.Caption := 'Подключение установлено'
  else
    form1.Caption := 'Подключение не установлено';
end;

 

procedure TForm1.Button4Click(Sender: TObject);
begin
  ZQuery1.SQL.Text := 'SELECT * FROM RUS_USERS';
  ZQuery1.Open;
end; 

 

Кодировку необходимо выставлять такую же как на сервере, на сервере её можно узнать запросом.

select * from nls_database_parameters where parameter like '%CHARACTERSET'

 

При нажатие все отобразилось как надо. Вот собственно и все на этом.

тестовое приложение

Если найду время напишу про работу с Oracle  из Lazarus.

Дополнение. В общем нет необходимости тягать с сервера весь клиент целиком, можно скачать Client Light, и засунуть все библиотеки в папку с программой либо в System32.

 

 

 

Добавить комментарий