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
,
Лучший способ - проанализировать запрос перед его выполнением. Вы найдете пример "как" с этим программным обеспечением с открытым исходным кодом