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

Три причины, по которым Вам стоит перейти на новый IBProvider

Очень часто в своих программах мы забываем или ленимся контролировать данные, которые передаем в базу данных. Мы верим, что умный сервер Firebird или InterBase сам решит возможные проблемы. Хотя конечно, это не его задача.

В особо запущенных случаях, данные, полученные после ввода пользователя, сразу приводятся к нужному типу через CAST, без какой-либо проверки.

В результате: пользователь вводит «охинею», драйвер СУБД передает «охинею» на сервер, а сервер возвращает ошибку, которую уже видит пользователь. Пользователи начинают Вас недолюбливать: «Его программы глючат, у него кривые руки», а вы ненавидите юзеров, которые не могут нормально ввести текст.


Угадайте Что подумает пользователь о Вас,
когда увидит такую ошибку на экране?


Что Сделать Чтобы Мои Программы Не «глючили»?

Используйте компоненты доступа к Firebird и InterBase, в которых реализован контроль входящих данных и их «умное преобразование», в тот формат, который поддерживает сервер. Это значительно сократит ваш объем работы по контролю вводимых данных и их приведению к типам БД.

К примеру, новая версия IBProvider самостоятельно производит «умное преобразование» текста в DBTYPE_R8 (DOUBLE). В частности:

  • Осуществляет контроль переполнения.
  • Гибкий алгоритм масштабирования, предотвращает проблемы, подобные CORE-2857.

Например:

dim cn
set cn = CreateObject("ADODB.Connection")

cn.Provider = "LCPI.IBProvider.3"
cn.Properties("Location") ="localhost:d:\database\employee.fdb"
cn.Properties("User ID")  ="SYSDBA"
cn.Properties("Password") ="masterkey"

cn.Properties("auto_commit_ddl") = 1 'run DDL in separate trans

cn.Open
cn.BeginTrans
cn.Execute("RECREATE TABLE TBL_R8 (R8 DOUBLE PRECISION)")

dim cmd
set cmd=createobject("ADODB.Command")
cmd.ActiveConnection=cn
cmd.CommandText="insert into TBL_R8 VALUES (?)"
cmd.Parameters.Append cmd.CreateParameter(,8) 'adBSTR

wscript.echo "------------------------------------------"
cmd(0).value="1."&string(1024,"0")
wscript.echo "insert value to TBL_R8: "&cstr(cmd(0).value)
cmd.execute

' or very huge double
'cmd(0).value="1"&string(1000*1000,"0")&"E-1000000"
'wscript.echo "------------------------------------------"
'wscript.echo "value2: "&cstr(cmd(0).value)
'cmd.execute

cn.CommitTrans

call cn.close()

После выполнения скрипта на экране будет отображено значение входящего параметра, которое будет преобразовано в DOUBLE PRECISION и добавлено в БД:

------------------------------------------
insert value to TBL_R8: 1.0000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000

Если вы работаете через новый IBProvider, запросы, подобные этому, НЕ выдадут ошибку: arithmetic exception, numeric overflow, or string truncation.



За 10 лет работы над проектом IBProvider мы НЕОДНОКРАТНО
сталкивались с подобными ПРОБЛЕМАМИ

Недавний случай с преобразованием текста в тип DOUBLE далеко не единственный. За 10 лет разработки IBProvider мы НЕОДНОКРАТНО сталкивались с подобными ПРОБЛЕМАМИ:

  • Проблемами с точностью при конвертировании DOUBLE;
  • Проблемами в работе с NUMERIC типами;
  • Неподдерживаемые типы (GUID, BOOL, MS SQL TIME и т.д.);
  • И еще множество других проблем, благодаря которым появился «умный конвертор типов»;

Как Решаются Проблемы с Преобразованием Типов?

В IBProvider реализован собственный «умный конвертор типов», который:

  • Совместим со всеми версиями Windows, т.к. использует собственные функции преобразования типов, минуя WinAPI.
  • В большинстве случаев не требует явного приведения типов к типу БД, т.к. поддерживает преобразование на лету простых типов, типа VARIANT, массивов и бинарных данных.
  • Эмулирует отсутствующие в Firebird типы BOOL и GUID.
  • Вам больше не нужно писать свои перекодировщики текста. Конвертор типов обладает уникальным в своем роде механизмом, поддерживающим текстовые преобразования 49 кодовых страниц на лету, включая UNICODE, UTF-8, OCTETS, NONE.

Как убедиться что Ваш компонент доступа работает ПРАВИЛЬНО?

Не достаточно реализовать отличную возможность в коде программы, необходимо убедиться в том, что написанное, будет работать БЕЗ ОШИБОК в самых непредсказуемых ситуациях. Особенно это актуально для сложных программ, таких как компоненты доступа к базам данных.

Единственный способ проверить правильность работы — это использовать автоматические системы тестирования. В противном случае вам гарантированы:

  • Утечки памяти;
  • Критические завершения работы приложений;
  • Непостоянные сообщения об ошибках, которые невозможно отладить;
На сегодняшний день каждый(!) новый релиз IBProvider прогоняется примерно через
полмиллиона автоматических тестов!

За 2009 год Команда IBProvider выпустила 12 новых версий и уже 3 версии в 2010 году

Во всех релизах О-П-Е-Р-А-Т-И-В-Н-О (оперативно) внедрялся новый функционал, и решались известные проблемы. Мы не берем деньги, за то, что новые версии не выходят!

Приобретая IBProvider прямо сейчас, вы гарантировано получаете бесплатные обновления в течение 1 года.

Хотите убедиться в том, что вы получаете не сырые сборки, а полноценные релизы?

Посмотрите новости хотя бы за последний год.

К примеру, в новой версии IBProvider помимо «умного преобразования» текста в DOUBLE:

  • Оптимизированы алгоритмы чтения/записи свойств.
  • Свойство инициализации «Multiple Parameter Sets» теперь по умолчанию TRUE. (v3)
  • Свойство инициализации «rowset_vm_using» теперь по умолчанию -1. Это отключает менеджер памяти на базе VirtualAlloc+SEH.
  • Исправлена ошибка: возможность изменения RO-свойств при установке VT_EMPTY значений.
  • Свойство инициализации «Window Handle» больше не сохраняется в файле настроек подключения.
  • Провайдер использует кодовую страницу UTF8 при сохранении параметров инициализации в файл (интерфейс IPersistFile)
  • Улучшена обработка ошибок в методах интерфейса IPersistFile.
  • Многочисленные внутренние изменения

Закажите IBProvider прямо сейчас и
ПОЛУЧИТЕ 1 год БЕСПЛАТНЫХ обновлений в подарок

Первые 8, 5 4 покупателя получат ЕЩЕ один подарок:
1 дополнительное обновление IBProvider после окончания годовой подписки.

Получить IBProvider прямо сейчас >>


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