我正在为执行 SQL 查询的正确程序而苦苦挣扎。
基本上,我有文本字段,用户可以在其中输入 SQL 代码,程序将执行它。不幸的是,我不知道是否会返回数据集,所以我无法确定使用哪个函数:ADOQuery.Open 或 ADOQuery.ExecSQL
但是如果有返回结果,我需要进行一些计算。
有什么方法可以预测查询是否会返回一些结果,或者它是否只是 UPDATE ......如何处理这种情况?
忘记 TADOQuery、TADOTable、TADOStoredProc。它们是旨在简化从使用 BDE 的应用程序移植的组件,这些 BDE 使用了它们的对应物。在您的情况下,您可以使用 TADOCommand,它的 Execute() 方法将在需要时返回一个记录集,您可以通过 TADODataset 将 Execute() 返回值分配给它的 RecordSet 属性来访问它。
如果不完全解析和分析查询文本,您无法确定。
但是您可以(并且在您的情况下应该)ADOQuery.Open
每次都使用,因为在不返回命令的情况下,将返回一个空的结果集 - 您可以通过TADOQuery.Bof and TADOQuery.Eof
或更底层的属性轻松检测到TADOQuery.Recordset
。
最好的方法是在执行之前分析查询。您将找到使用此开源软件的“操作方法”示例