DELPHI ADOQuery - 检测是否会返回数据集

3

我在执行SQL查询的正确步骤上遇到了困难。

基本上,我有一个文本字段,用户可以输入SQL代码,程序将执行它。不幸的是,我不知道数据集是否会被返回,因此我无法确定使用哪个函数:ADOQuery.Open还是ADOQuery.ExecSQL。

但是如果有结果返回,我需要进行一些计算。

有没有办法预测查询是否会返回结果,或者它只是UPDATE而已...如何处理这种情况?

3个回答

4

不要再考虑TADOQuery,TADOTable和TADOStoredProc。它们是为了方便从使用它们的BDE应用程序进行迁移而设计的组件。在您的情况下,您可以使用TADOCommand,其Execute()方法将在需要时返回一个记录集,您可以通过将Execute()返回值分配给其RecordSet属性来访问它。


0

如果不完全解析和分析查询文本,你就无法确定。

但是你可以(而且在你的情况下应该)每次使用ADOQuery.Open,因为在不返回命令的情况下,将返回一个空结果集 - 你可以通过TADOQuery.Bof和TADOQuery.Eof或更低级别的属性TADOQuery.Recordset轻松检测到它。


如果您在使用TADOQuery.Open执行不应返回数据的查询时,将会引发异常。同样的情况也适用于TADOStoredProc.Open - Andriy M

0

最好的方法是在执行查询之前对其进行分析。 你可以使用此开源软件来找到“如何”示例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接