Hallo,
Ich versuche auf einem Ora Server eine Datei Binär in einem Blobfeld zu speichern und wieder auszulesen, es werden aber nicht immer
Daten gespeichert, laden funktioniert garnicht. Das speichern mach ich folgendermassen:
Delphi-Quellcode:
var
Stream1: TFileStream;
Stream2: TStream;
begin
opendialog1.Execute;
Stream1:= TFileStream.Create (Opendialog1.Filename, fmOpenread);
Oratable1.Active:= True;
Oratable1.Edit;
OraTable1.FieldByName ('ID').asinteger:= 1;
Stream2:= OraTable1.CreateBlobStream (OraTable1.FieldByName ('DAT'), bmWrite);
Stream2.CopyFrom (Stream1, 0);
Oratable1.Post;
Oratable1.Active:= False;
Stream2.Free;
Stream1.Free;
end;
oder so:
Delphi-Quellcode:
var
Stream1: TFileStream;
begin
opendialog1.Execute;
Stream1:= TFileStream.Create (Opendialog1.Filename, fmOpenread);
Oratable1.Active:= True;
Oratable1.Edit;
OraTable1.FieldByName ('ID').asinteger:= 1;
TBlobField (OraTable1.FieldByName ('DAT')).LoadFromStream (Stream1);
Oratable1.Post;
Oratable1.Active:= False;
Stream1.Free;
end;
das 2 Bsp. funktionierte Anfangs glaube ich, das erste funktionierte garnicht.
Dass das speichern nicht klappt merke ich daran das er einfach zu schnell ist wenn man eine etwas größere Datei nimmt.
Das Lesen des Blobs hab ich so gemacht:
Delphi-Quellcode:
var
Stream1: TFileStream;
begin
Savedialog1.Execute;
Stream1:= TFileStream.Create (Savedialog1.Filename, fmCreate);
Oratable1.Active:= True;
TBlobField (OraTable1.FieldByName ('DAT')).SaveToStream (Stream1);
Stream1.Free;
Oratable1.Active:= False;
end;
Die Datei die ich aber aus dem Blob heraus gespeichert habe, hatte immer 0 bytes, obwohl ich vermuten kann das das Blob Feld Daten hatte.
Wäre für Hilfe sehr Dankbar.
Mfg
lordcroc