DELPHI ADOQuery - определить, будет ли возвращен набор данных

Я борюсь с правильной процедурой для выполнения SQL-запроса.

По сути, у меня есть текстовое поле, где пользователь может ввести код SQL, и программа выполнит его. К сожалению, я не знаю, будет ли возвращен набор данных, поэтому я не могу сказать, какую функцию использовать: ADOQuery.Open или ADOQuery.ExecSQL.

Но мне нужно сделать некоторые расчеты, если есть возвращаемые результаты.

Есть ли способ предсказать, если запрос вернет какой-то результат, или если это только ОБНОВЛЕНИЕ... как справиться с этой ситуацией?

3 ответа

Решение

Забудьте о TADOQuery, TADOTable, TADOStoredProc. Они являются компонентами, разработанными для облегчения портирования из приложений, использующих BDE, которые использовали их аналоги. В вашей ситуации вы можете использовать TADOCommand, его метод Execute() будет возвращать набор записей при необходимости, и вы можете получить к нему доступ через TADODataset, присваивая возвращаемое значение Execute() его свойству RecordSet.

Без полного разбора и анализа текста запроса вы не сможете сказать наверняка.

Но вы можете (и в вашем случае должны) использовать ADOQuery.Open каждый раз, как и в случае неповторяющейся команды, будет возвращен пустой набор результатов, который можно легко определить с помощью TADOQuery.Bof and TADOQuery.Eof или более низкоуровневое свойство TADOQuery.Recordset,

Лучший способ - проанализировать запрос перед его выполнением. Вы найдете пример "как" с этим программным обеспечением с открытым исходным кодом

Другие вопросы по тегам