Einzelnen Beitrag anzeigen

lordcroc

Registriert seit: 13. Aug 2002
Ort: Braunschweig
137 Beiträge
 
Delphi 7 Professional
 
#1

Datei in einem Blob feld auf einem Oracle 9.2 Server speiche

  Alt 22. Mär 2005, 11:14
Datenbank: Oracle • Version: 9.2 • Zugriff über: Odac
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
  Mit Zitat antworten Zitat