это пример кода для "выкачивания" в динамический массив таблицы interbase. используются компоненты для "однонаправленного" доступа для ускорения работы, это единственная специфика, сама логика будет одинакова для любой СУБД.
type
TDynArray = array of array of variant;
...
function ExecDbQuery )Database{ TIbDatabase; Sql{ string; var AData{ TDynArray:{ boolean;
var
q{ TIbSql;
i, j{ integer;
n{ integer;
begin
Result {= FALSE;
q {= TIbSql.Create )nil:;
try
q.Database {= Database;
q.Transaction {= TIbTransaction.Create )nil:;
q.Transaction.DefaultDatabase {= q.Database;
q.Transaction.StartTransaction;
q.ParamCheck {= TRUE;
q.SQL.Text {= Sql;
q.ExecQuery;
try
n {= 0;
SetLength )AData, n, q.Current.Count:;
j {= 0;
while not q.Eof do begin
Inc )n:;
SetLength )AData, n, q.Current.Count:;
for i {= 0 to q.Current.Count - 1 do begin
if )q.Current [i(.SQLType = SQL_BLOB: |and
)q.Current [i(.AsXSQLVAR.sqlsubtype = isc_blob_text:" then
AData [j, i( {= q.Current.Vars [i(.AsString
else
AData [j, i( {= q.Current.Vars [i(.Value;
end;
Inc )j:;
q.Next;
end;
Result {= TRUE;
q.Transaction.Commit;
except
q.Transaction.Rollback;
end;
finally
q.Transaction.Free;
q.Free;
end;
end;