Sources
Delphi Russian Knowledge Base
DRKB - база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Особенности реализации клиентской части

01.06.2001

До версии 6.5 основным интерфейсом доступа к MS SQL Server со стороны клиента была библиотека DB-Library. Она реализовывала набор низкоуровневых интерфейсов, позволяющих организовать взаимодействие с сервером. Однако, в версии 7 Microsoft ввела новый интерфейс доступа - OLE DB. В связи с этим развитие DB-Library прекращено, и она оставлена лишь для обратной совместимости. Доступ через неё не поддерживает новых расширений сервера (UNICODE, текстовые поля до 8 Кбайт, тип данных GUID). Однако, старые приложения, не использующие этой функциональности сохраняют работоспособность, хотя может понадобиться некоторая их переделка в связи с изменениями в 7-й версии. Драйвер SQL Links реализует доступ при помощи DB-Library, и воспользоваться расширениями через него невозможно. Для обеспечения полноценного доступа к MS SQL Server 7.0 и выше необходимо использовать новый набор компонентов ADOExpress, включенный в Delphi 5. Работа через BDE возможна, но при этом сервер доступен в объеме возможностей версии 6.х. Также, существует ODBC драйвер, через который возможен полнофункциональный доступ к серверу. При работе с сервером версии 2000 на работу через BDE накладываются дополнительные ограничения, связанные с использованием индексов по вычисляемым полям.

Доступ при помощи ADOExpress

ActiveX Data Objects (ADO) - надстройка над интерфейсом OLE DB, позволяющая обеспечить бизнес приложениям высокоуровневый доступ к данным. Эта технология включена в Windows 2000, а на остальных версиях доступна в виде бесплатного обновления. ADO автоматически устанавливается на компьютер при установке клиента MS SQL Server

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

clip0180

В качестве драйверов БД ADO использует так называемые OLE DB провайдеры, которые представляют собой COM-серверы, реализующие предопределенный набор COM-интерфейсов. Например, для доступа к набору данных служит интерфейс IRowset, возвращаемый OLE DB при открытии этого набора данных. Для указания ADO, какой провайдер и с какими параметрами должен использоваться служит строка подключения, которая содержится в свойстве ConnectionString компонентов ADOExpress

Для её построения в состав Delphi включен мастер, позволяющий задать параметры графически

clip0179

Чтобы подключиться к MS SQL Server, необходимо указать тип провайдера «Microsoft OLE DB Provider for SQL Server» и в следующем окне заполнить информацию, необходимую для подключения

clip0181

После этого можно использовать компоненты ADO как обычных наследников TDataSet

Необходимо отметить, что ADO в значительной мере оптимизировано для использования совместно с MS SQL Server 7.0. Полностью поддерживается модель работы Prepare-Execute, позволяющая эффективно кэшировать планы запросов, серверные курсоры (свойства CursorLocation и CursorType), возможность возврата запросом или хранимой процедурой нескольких наборов данных, прямой доступ к таблицам на сервере (без промежуточной генерации запроса). Например, задав в TADOQuery.SQL следующий код:

SELECT * FROM One
SELECT * FROM Two

Можно в приложении получить два набора данных:

ADOQuery1.Open;
ADODataSet1.RecordSet := ADOQuery1.NextRecordSet;

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

В оригинальной версии Delphi 5 ADOExpress содержит ряд серьёзных ошибок, которые делают работу при помощи этих компонентов практически невозможной. Поэтому настоятельно рекомендуется установка пакета обновления Delphi и последнего обновления ADO (AePatch.exe), доступного с сайта http://community.borland.com из раздела Code Central

Доступ при помощи BDE

Этот способ доступа не является рекомендуемым, однако для многих приложений, написанных еще для версии 6.х он может понадобиться из соображений обратной совместимости.

В составе BDE поставляется драйвер SQL Link для Microsoft SQL Server. Этот драйвер использует библиотеку DB-Library, что исключает полноценный доступ к возможностям сервера. При работе через этот драйвер, например, нельзя использовать символьные данные в кодировке Unicode, некоторые системные функции. Если необходимо получить доступ к таким данным, необходимо в запросе явно преобразовать их в один из поддерживаемых типов данных, например:

SELECT CAST(USER_NAME() AS VARCHAR(255))

При работе с сервером при помощи BDE и драйвера SQL Link необходимо помнить следующее:

clip0182

Previous page:
Обзор сервера
Top:
DRKB
Next page:
Особенности реализации серверной части