我在执行SQL查询的正确步骤上遇到了困难。
基本上,我有一个文本字段,用户可以输入SQL代码,程序将执行它。不幸的是,我不知道数据集是否会被返回,因此我无法确定使用哪个函数:ADOQuery.Open还是ADOQuery.ExecSQL。
但是如果有结果返回,我需要进行一些计算。
有没有办法预测查询是否会返回结果,或者它只是UPDATE而已...如何处理这种情况?
不要再考虑TADOQuery,TADOTable和TADOStoredProc。它们是为了方便从使用它们的BDE应用程序进行迁移而设计的组件。在您的情况下,您可以使用TADOCommand,其Execute()方法将在需要时返回一个记录集,您可以通过将Execute()返回值分配给其RecordSet属性来访问它。
如果不完全解析和分析查询文本,你就无法确定。
但是你可以(而且在你的情况下应该)每次使用ADOQuery.Open
,因为在不返回命令的情况下,将返回一个空结果集 - 你可以通过TADOQuery.Bof和TADOQuery.Eof
或更低级别的属性TADOQuery.Recordset
轻松检测到它。
TADOQuery.Open
执行不应返回数据的查询时,将会引发异常。同样的情况也适用于TADOStoredProc.Open
。 - Andriy M