DELPHI ADOQuery - определить, будет ли возвращен набор данных - PullRequest
3 голосов
/ 18 апреля 2011

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

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

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

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

Ответы [ 3 ]

4 голосов
/ 18 апреля 2011

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

0 голосов
/ 18 апреля 2011

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

0 голосов
/ 18 апреля 2011

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

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

...