3

我正在为执行 SQL 查询的正确程序而苦苦挣扎。

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

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

有什么方法可以预测查询是否会返回一些结果,或者它是否只是 UPDATE ......如何处理这种情况?

4

3 回答 3

4

忘记 TADOQuery、TADOTable、TADOStoredProc。它们是旨在简化从使用 BDE 的应用程序移植的组件,这些 BDE 使用了它们的对应物。在您的情况下,您可以使用 TADOCommand,它的 Execute() 方法将在需要时返回一个记录集,您可以通过 TADODataset 将 Execute() 返回值分配给它的 RecordSet 属性来访问它。

于 2011-04-18T17:10:07.413 回答
0

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

但是您可以(并且在您的情况下应该ADOQuery.Open 每次都使用,因为在不返回命令的情况下,将返回一个空的结果集 - 您可以通过TADOQuery.Bof and TADOQuery.Eof或更底层的属性轻松检测到TADOQuery.Recordset

于 2011-04-18T16:55:21.273 回答
0

最好的方法是在执行之前分析查询。您将找到使用此开源软件的“操作方法”示例

于 2011-04-18T18:52:10.337 回答