Я работаю с несколькими базами данных в одном приложении.Я использую драйверы от двух разных компаний.В обеих компаниях есть потомки tTable и tQuery, которые хорошо работают.
Мне нужен способ иметь общий доступ к данным, независимо от того, какой компонент driver / tQuery я использую для возврата набора данных.Эти данные НЕ будут привязаны к компонентам, просто к моей логике.
Например ... (псевдокод) Давайте создадим функцию, которая может работать с любым компонентом 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