Компоненты DOCI для прямого доступа к Oracle Version 1.15 |
Copyright © 1998-2001 by Andrey Romanchenko
All rights reserved.
e-mail: | lasersquad@tut.by |
web site: | http://doci.narod.ru/ |
Компоненты предназначены для доступа к серверам Oracle 8 из Delphi 4, 5, 6.
Они используют стандартную библиотеку OCI (Oracle Call Interface), которая
устанавливается при установе Oracle Client for Windows 9x/NT/2000. Поэтому
перед началом работы необходимо установить Oracle Client, ну конечно иметь где нибудь
работающий Oracle Server любой Еdition.
Работают только с клиентом Oracle8 и выше (8i), но можно ходить и к
Oracle 7, используя клиентов восьмых.
Что касается Delphi 4, 5, 6 - почти
ничего специфического
нет, кроме того, что используется стандартный редактор TParam, который ранее
надо было писать самому. Кто хочет - может заточить под Delphi3 - скажу большое
спасибо и различия включу в свой исходник. Так же очень приветствуются любые рекомендации как заточить их под
Kylix. Так же если кому надо - портируйте
под Oracle7 или Oracle 9 - там ничего сложного нет, но мне пока не на чем отлаживать.
Если будете вносить изменения в исходный код то не забывайте присылать их мне.
Поддерживаются оракловские типы BLOB и CLOB.
С версии 1.0 BLOBы работают нормально и у компонент наследников TDataSet.
(у наследников TDataSet пока только на чтение)
Кто интересуется изменениями смотрите ChangeLog.
Я постараюсь преложить все усилия по отлову багов, но большую роль играют ваши отзывы и описание замеченных недостатков - не все я могу самостоятельно отловить.
Мой e-mail - lasersquard@yahoo.com, или lasersquad@tut.by.TOraDB - коннект к базе и управление транзакциями. Для хождения к базе все компоненты используют этот компонент. Все вызовы OCI сосредоточены именно в этом компоненте.
TAOraSQL - непосредственно выполняет вызовы OCI обращаясь к методам
TOraDB (выполнение запросов и кусков PL/SQL кода).
Является полнофункциональным компонентом, применяется
для случаев когда НЕ нужна совместимость с TDataSet, а именно если нужно
выполнить хранимую процедуру или кусок PL/SQL кода или запрос результаты
которого не нужно показывать в TDBGridе.
Работает быстрее TOraSQL т.к не выполняет лишних действий связаных с
совместимостью с TDataSet.
Позволяет обращаться к результатам запроса по номеру строки.
За одно обращение к базе вытягивает столько записей сколько указано
в свойстве FetchCount. При работе с большими таблицами рекомендуется увеличивать
значение FetchCount. По умолчанию FetchCount=100 что соответствует средним
размерам данных.
Если сделать ему просто Open то запрос откроется, но никакие данные не
вытянутся для этого надо использовать либо ReadAll после Open
либо OpenAll вместо Open.
В этих случаях на клиента вытянутся все строки запроса. Если все строки не
нужны то можно использовать ф-цию ReadRecord(RecordNum), которая будет тянуть
по FetchCount записей за раз пока не будет вытянуто больше или столько же
строк сколько затребовали.
TOraSQL - wrapper вокруг TAOraSQL для совместимости с TDataSet. Аналог TQuery, TStoredProc. Позволяет задать запрос к базе, поля (програмно и в дизайнере), в общем работа с TOraSQL идет как со стандартными компонентами Delphi для доступа к данным. По умолчанию при открытии запроса вычитывается столько записей сколько надо для показа в гриде. Что бы прочитать больше записей можно использовать методы OpenAll, ReadAll, VGoto.
TAOraUpdateSQL - компонента для подсоединения к TOraSQL и задания запросов на изменение (INSERT, DELETE, UPDATE) данных. Является аналогом TUpdateSQL в Delphi. Запросы на изменения данных можно писать и вручную в свойства DeleteSQL, InsertSQL, ModifySQL.
TMemoryDataSet - таблица в памяти наследница TDataSet. Позволяет хранить в памяти и показывать данные в TDBGride данные любого размера. Не связана ни с какими базами данных.
TAMemoryDataSet - таблица в памяти не совместимая с TDataSet. Применяется когда надо хранить в памяти данные организованные подобно таблице, но не нужно их показывать в TDBGridе. Работает быстрее TMemoryDataSet.
DynamicArrays.pas - мои компоненты для работы с динамическими массивами. используются многими другими компонентами. Этот модуль может использоваться отдельно от dOCI компонент т.к. содержит много очень полезных и мощных классов для работы с массивами в памяти.
VirtualDataSet.pas - некоторое усовершенствование TDataSet для удобства. от него наследуются все компоненты требующие совместимости с TDataSet.
DataSetQuery.pas - содержит класс-наследник TVirtualDataSet, который содержит 90% функциональности конечных компонент. Для разработчика компонент класс TDataSetQuery представляет наибольший интерес т.к. с перекрытием нескольких методов из него можно сделать нормальный компонент для доступа к любым данным (например легко сделать MemoryTable). Содержит так же класс TABlobStream, который используется внутри TDataSetQuery для доступа к полям типа BLOB.
OraDB.pas - содержит компонент TOraDB для коннекта к Ораклу, аналог TDatabase в Delphi.
AOraSQL.pas - содержит непосредственно класс TAOraSQL и используемые им же 2 класса TAOraField и TAOraParam для представления полей и параметров запроса.
OraSQL.pas - содержит класс TOraSQL.
OraDefines.pas - содержит константы и определения функций для OCI вызовов.
OraError.pas - содержит классы и функции для работы с исключениями (EOraError, ADatabaseError).
MemoryDataSet.pas - содержит класс TMemoryDataSet наследник TDataSet для хранения таблиц в памяти. Практически то же что и TOraSQL не связан с базами. Может показывать данные в TDBGride.
AMemoryDataSet.pas - содержит класс TAMemoryDataSet для хранения данных в памяти когда не нужна совместимость с TDataSet. Работает быстрее TMemoryDataSet и рекомендуется к использованию когда не нужна совместимость с TDataSet.
AOraUpdateSQL.pas - содержит класс TAOraUpdateSQL для аналог стандартного TUpdateSQL
dOCIMessages_LANGUAGE.lang - ресурсный файл со строками сообщений об ошибках. Таких файлов может быть несколько по одному для каждого языка. Пока есть только два языка - русский и английский (файлы dOCIMessages_Russian.lang и dOCIMessages_English.lang соответственно). Те кому нужны другие языки переводите один из существующих и присылайте его мне я включу его в дистрибутив. Какой ресурсный файл будет использоваться задается в dOCI.inc и dOCIMessages.pas с помощью условной компиляции.
GoodDate.pas - содержит множество полезных функций для работы с датами в различных форматах.
OraUtils.pas - содержит различные полезные функции используемые в компонентах.
BDE OCI(FetchCount=1) OCI(FetchCount=1000)Тесты выполнялись :
INSERT 24 19
SELECT 27 26 4