我正在努力执行SQL查询的正确程序。
基本上,我有文本字段,用户可以输入SQL代码,程序将执行它。 不幸的是,我不知道是否会返回数据集,所以我不知道要使用哪个函数:ADOQuery.Open或ADOQuery.ExecSQL
但如果有结果返回,我需要进行一些计算。
有没有办法预测查询是否会返回某些结果,或者它是否只是UPDATE ...如何处理这种情况?
答案 0 :(得分:4)
忘掉TADOQuery,TADOTable,TADOStoredProc。它们是旨在简化使用使用其对应的BDE的应用程序移植的组件。在您的情况下,您可以使用TADOCommand,它的Execute()方法将在需要时返回一个recorset,您可以通过TADODataset为其RecordSet属性分配Execute()返回值来访问它。
答案 1 :(得分:0)
如果没有完全解析和分析查询文本,无法确定。
但是你可以(在你的情况下应该)每次都使用ADOQuery.Open
,就像没有返回命令一样,一个空的结果集将是返回 - 您可以通过TADOQuery.Bof and TADOQuery.Eof
或更低级别的属性TADOQuery.Recordset
轻松检测到。
答案 2 :(得分:0)
最好的方法是在执行之前分析查询。 您将在此open source software
中找到“如何”的示例