![]() |
Re: Denkblockade: Wie speicher ich ein Array in einer Datenb
:wall:
Dax ist vermutlich unschuldig, ich bin nur zu dämlich, BLOBs zu schreiben. Denn mit der U_Store_Dynamic_Params.pas von sirius kann ich das Array in einem FileStream speichern und auch wieder lesen. Nur mit den BLOBs nicht.. :wall: Kennt jemand ein Tutorial, dass die Verwendung von BLOBS mit Zeos und Firebird en Detail beschreibt? Am Besten ein richtiges Anfängertutorial, "Blobs for Dummies", mit allen Fehlern, die man machen kann... :stupid: Nu' gehts: Schreiben:
Delphi-Quellcode:
Lesen:
procedure TORPDataBase.WriteNodeToDB(Node: TORPNode);
var Blob: TMemoryStream; i: integer; begin Blob := TMemoryStream.Create; Blob.Seek(0,soFromBeginning); try DecimalSeparator := '.'; with fInsertNodeQuery do begin Connection := fConnection; ParamCheck := true; SaveToStream(Node.Tags, Blob, TypeInfo(TORPTags), SizeOf(Node.Tags)); Params.CreateParam(ftBlob, 'tags', ptInput); ParamByName('tags').LoadfromStream(Blob, ftBlob); ParamByName('lon').AsFloat := StrToFloat(Node.Lon); ParamByName('lat').AsFloat := StrToFloat(Node.Lat); ParamByName('node_id').AsInteger := StrToInt(Node.ID); ExecSQL; end; finally FreeAndNil(Blob); end; end;
Delphi-Quellcode:
Benötigt wird noch
function TORPDataBase.ReadNodesFromDB(): TORPNodes;
var BlobStream: TStream; fSelectNodeQuery: TZQuery; i: integer; begin DecimalSeparator := '.'; fSelectNodeQuery := TZQuery.Create(nil); with fSelectNodeQuery do begin Connection := fConnection; ParamCheck := true; SQL.Text := 'SELECT * FROM NODES'; Open; While not fSelectNodeQuery.Eof do begin SetLength(Result,Length(Result)+1); i := High(Result); Result[i].ID := FieldByName('ID').AsString; Result[i].Lat := FieldByName('LAT').AsString; Result[i].Lon := FieldByName('LON').AsString; BlobStream := CreateBlobStream(FieldByName('TAGS'), bmRead); LoadFromStream(BlobStream, Result[i].Tags, TypeInfo(TORPTags), SizeOf(Result[i].Tags)); FreeAndNil(BlobStream); fSelectNodeQuery.Next; end; end; end; ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz