Дата публикации: 01.12.2000

Тотальное переписывание провайдера

Изменения в IBProvider

На текущий момент, благодаря тотальной реконструкции, мы сдвинулись с мертвой точки в отношении управления результирующими множествами. Теперь провайдер может самостоятельно обеспечивать произвольный доступ к выбранному множеству, и начинает использовать временный файл, если превысит лимит на допустимый объем памяти (не зависимо от режима доступа). По умолчанию создается объект с последовательным однонаправленным доступом.

      cmd.CommandText="select * from people"
      cmd.Properties("IRowsetLocate")=true ' разрешаем произвольный доступ

      set rs=cmd.Execute

После этого можно пользоваться методами Recordset: MoveLast, MoveFirst и т.д.

Другое большее изменение касается команд. Поддержка именованных параметров вещь достаточно тривиальная, если не принимать во внимание, что ADO наотрез отказывается передавать эти имена в провайдер. Поэтому, имя указываемое в Command.CreateParameter — только для удобства пользования ADO, не более. Хорошо, что InterBase имеет возможность самостоятельно определять типы параметров запроса, которые провайдер, вместе с именами, и возвращает ADO компонентам.

      cmd.CommandText="select * from people where id<id"
      cmd("id")=100

      set rs=cmd.Execute

Для контроля и выявления ошибок в тексте запроса у команд определено свойство «prepare stmt«, в котором хранится преобразованный текст запроса с ‘?’ вместо имен. При тестировании была выявлена одна неприятность: в ADO нельзя использовать имена для BLOB параметров. Технический аспект этой ошибки известен — ADO пытается установить информацию о параметрах обратно, но без указания имен. Провайдеру это не нравится. Выходом является использование неименованных параметров (‘?’). Смешивать в тексте запроса именованные и неименованные параметры запрещено.

Кроме «полезного» кода в провайдере появилась новая партия «параноидальных» ловушек на ошибки. По нашим наблюдениям, на скорость это мало влияет. Зато является гарантией качества и более простого способа выявления виноватого. Тем не менее, на этот раз вы можете скачать и «чистый» код. Наши изуверские тесты ничего не нашли и мы решились на этот шаг.


Дата публикации: 01.12.2000. Права на материал принадлежат: IBProvider. При перепечатке ссылка на сайт https://www.ibprovider.com/rus обязательна.
Предыдущие новости
Поддержка IB6