Zitat von
dominik.boehm:
Zitat von
Elvis:
Könnte auch ein Argument sein, Factories (wie getAdoDataSet) Interface instanzen zurückgeben zu lassen. Dadurch kümmert sich der Compiler um Try-finally
und man spart sich Tipperei.
Ich gebe dir Recht - das wäre ein guter Ort, um Interfaces einzusetzen. Allerdings müsste ich dann ja nicht nur ein Interface erstellen, sondern auch noch eine von ADODataSet abgeleitete Klasse, die dann auch das Interface implementiert.
Nicht unbedingt.
Falls du DataSets hauptsächlich zum einmaligen Iterieren nimmst, würde ein minimalister Wrapper reichen (Und dich von dem ekligen Eof/Next entlasten...):
Delphi-Quellcode:
IDataReader = interface
function getRecordCount : Integer;
function getFields : TFields;
property RecordCount : Integer read getRecordCount;
property Fields : TFields read getFields;
function Read : Boolean;
procedure Close;
end;
Keine try-finally, kein Parametergefriemel und kein nerviges Eof->Next mehr:
Delphi-Quellcode:
reader := AdoReaderFactory.CreateReader('SELECT X FROM Y WHERE Z = :Z', [50]);
while reader.Read() do
ListBox.Items.Add(reader.Fields[0].AsString);
ADO selbst besteht als
COM Lib ja auch aus Interfaces, ich hatte nur keine Lust mich da durchzuwühlen (habe mich eigentlich nie wirklich mit
ADO befasst...)