Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datei in einem Blob feld auf einem Oracle 9.2 Server speiche (https://www.delphipraxis.net/42667-datei-einem-blob-feld-auf-einem-oracle-9-2-server-speiche.html)

lordcroc 22. Mär 2005 10:14

Datenbank: Oracle • Version: 9.2 • Zugriff über: Odac

Datei in einem Blob feld auf einem Oracle 9.2 Server speiche
 
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

csa 23. Mär 2005 10:42

Re: Datei in einem Blob feld auf einem Oracle 9.2 Server
 
Hallo,

mit den CLOBs hatte ich auch schon meine Erlebnisse, bspw. funktionierten NCLOBs bei bestimmten Textlängen nicht. Zugriff allerdings über ADO und den Provider von Oracle. Aber zumindest ein Statement zum Prüfen, ob die Daten angekommen sind, kann ich beitragen:

SQL-Code:
SELECT DBMS_LOB.GETLENGTH(<fieldname>) FROM <tablename>;
Gruß
Christoph


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz