Additional
dbCAP
AnyDAC
ThinDAC
NCOCI8
Topic: Переход на AnyDAC с SDAC при использовании ХП
Переход на AnyDAC с SDAC при использовании ХП
Posted: 2007/08/03 03:12
 
Дмитрий, после вашей публикации на sql.ru рассматриваю возможность перехода на ваши компоненты. Раньше для работы с MS SQL использовал SDAC. Есть моменты в SDAC, которые мне не нравятся.
Возникло несколько вопросов.
1. Если для реализации бизнес-логики использованы ХП, есть ли преимущества/недостатки ваших компонент по сравнению с SDAC?

2. Если при выполнении ХП возникает ошибка (любая), то мне нужно самому обеспечить возврат кода и текста ошибки на клиента или AnyDAC предоставит мне сведения?
А если это собственная (сгенерированная мною: код и и текст) ошибка?

3. Можно ли сделать централизованную обработку ошибок при операциях с БД (Connection.OnError)?
Что такое const AInitiator: IADStanObject в Connection.OnError?
Или централизованную обработку лучше делать с помощью IADGUIxErrorDialog?
Re:Переход на AnyDAC с SDAC при использовании ХП
Posted: 2007/08/03 07:21
 
Привет

1. Если для реализации бизнес-логики использованы ХП, есть ли преимущества/недостатки ваших компонент по сравнению с SDAC?
Скорее всего - ни да, ни нет. Оба DAC'а их честно выполняют. Про AnyDAC:
- поддерживается множественные наборы данных, возвращаемые ХП;
- AnyDAC пропускает пустые наборы, если не установлено SET NOCOUNT ON;
- поддержка array execution;
- и много чего хорошего, что идет уже не от драйвера, а от остальных частей AnyDAC.

Но есть и проблемы. Основная - "длинные" поля должны идти в конце select списков. Данная проблема будет устранна в 2.0. Большинство других так же будет решено в 2.0. На самом деле - все уже пофикшено, и ждет выхода 2.0
2. Если при выполнении ХП возникает ошибка (любая), то мне нужно самому обеспечить возврат кода и текста ошибки на клиента или AnyDAC предоставит мне сведения?
AnyDAC 1.x вам предоставит достаточно полную информацию об ошибке. Но абсолютно всю информацию, которую предоставляет клиент MSSQL, предоставит v 2.0. Где введен класс исключительной ситуации EADMSSQLNativeException.
А если это собственная (сгенерированная мною: код и и текст) ошибка?
Код и текст в любом версии вам будут доступны. Смотрите класс EADDBEngineException и его свойство Errors. Модуль - daADStanError.
3. Можно ли сделать централизованную обработку ошибок при операциях с БД (Connection.OnError)?
Да, на то и рассчитано это свойство.
Что такое const AInitiator: IADStanObject в Connection.OnError?Это ссылка на интерфейс объекта сгенерировшего исключительную ситуацию. IDAPhysCommand, IADPhysConnection и т.д.Или централизованную обработку лучше делать с помощью IADGUIxErrorDialog?
Этот интерфейс предназначен для реализации своих вариантов финальной реакции на ошибку. Чаще всего это - показать сообщение. Смотрите, например, TADGUIxFormsErrorDialog.

Удачи,
Дмитрий