DELPHI ADOQuery - 检测数据集是否将返回
我正在努力寻找执行 SQL 查询的正确过程。
基本上,我有一个文本字段,用户可以在其中输入 SQL 代码,程序将执行它。 不幸的是,我不知道是否会返回数据集,所以我无法告诉使用哪个函数:ADOQuery.Open 或 ADOQuery.ExecSQL
但如果有返回结果,我需要进行一些计算。
有什么方法可以预测查询是否会返回某些结果或者是否仅更新...如何处理这种情况?
I'm struggling with correct procedure for executing SQL query.
Basically, I have text field where user can enter SQL code and program will execute it.
Unfortunately, I don't know if the dataset will be returned, so I cant tell which function to use: ADOQuery.Open or ADOQuery.ExecSQL
But I need to make some calculations if there is results returned.
Is there any way of predicting if query will return some result or if it is UPDATE only ... how to handle this situation ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
忘记 TADOQuery、TADOTable、TADOStoredProc。它们是旨在轻松地从使用 BDE 的应用程序(使用其对应项)进行移植的组件。在您的情况下,您可以使用 TADOCommand,其 Execute() 方法将在需要时返回记录集,并且您可以通过 TADODataset 将 Execute() 返回值分配给其 RecordSet 属性来访问它。
Forget about TADOQuery, TADOTable, TADOStoredProc. They are components designed to ease porting from applications using the BDE that used their counterparts. In your situation you can use TADOCommand, its Execute() method will return a recorset when needed, and you can access it via a TADODataset assigning Execute() return value to its RecordSet property.
如果没有完全解析和分析查询文本,您就无法确定。
但是您可以(并且在您的情况下应该)使用
ADOQuery.Open
每次,就像不返回命令、空结果集的情况一样将被返回 - 您可以通过 TADOQuery.Bof 和 TADOQuery.Eof 或更底层的属性 TADOQuery.Recordset 轻松检测到。Without completely parsing and analysing the query text, you can not tell for sure.
But you can (and in your case should) use
ADOQuery.Open
everytime, as in the case of a not returning command, an empty resultset will be returned - which you can easily detect viaTADOQuery.Bof and TADOQuery.Eof
or a more low-level propertyTADOQuery.Recordset
.最好的方法是在执行查询之前对其进行分析。
您将找到使用此开源软件的“如何使用”示例
The best way is to analyse the query before execute it.
You will found an exemple of 'how to' with this open source software