gpt4 book ai didi

Delphi - 如何通用化查询结果集

转载 作者:行者123 更新时间:2023-12-03 18:16:53 25 4
gpt4 key购买 nike

我在同一个应用程序中使用多个数据库。我正在使用来自两家不同公司的驱动程序。两家公司都有运行良好的 tTable 和 tQuery Descendants。

我需要一种方法来对数据进行通用访问,而不管我使用哪个驱动程序/tQuery 组件返回一组数据。此数据不会绑定(bind)到组件,只绑定(bind)到我的逻辑。

例如...(伪代码)让我们创建一个可以针对任一 tQuery 组件运行的函数

function ListAllTables(NameOfDatabase : String) :ReturnSet??
begin

If NameOfDataBase = 'X' then use tQuery(Vendor 1)
else use tQuery(Vendor 2)
RunQuery;
Return Answer...
end;

当正常运行查询时,我会这样做

Query.Open;
While not Query.EOF do
begin
Read my rows..
next;
end;

如果我正在调用 ListAllTables,我的返回类型是什么以便我可以遍历行?每个 tQuery 供应商都是不同的,所以我不能使用它(我可以吗,如果是的话,我想要吗?)我可以构建一个内存表,然后将其传回,但这似乎是 ListAllRows 构建一个内存表,然后将其传递回调用例程,以便它可以“取消构建”,即遍历行...

您有什么想法和建议?谢谢GS

最佳答案

几乎所有的 Delphi 数据集都源自 TDataset,并且大多数有用的行为都是在 TDataset 上定义的。

因此,如果您将每个表或查询分配给一个 TDataset 类型的变量,您应该能够以供应商中立的方式对该数据集执行您的逻辑。

我还将数据集的生成隔离到一组工厂函数中,这些函数仅创建特定于供应商的数据集并将其作为 TDataset 返回。每个工厂功能都在它自己的单元中。然后,只有那些小单位需要了解供应商特定组件。

关于Delphi - 如何通用化查询结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7870185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com