AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datei in einem Blob feld auf einem Oracle 9.2 Server speiche
Thema durchsuchen
Ansicht
Themen-Optionen

Datei in einem Blob feld auf einem Oracle 9.2 Server speiche

Ein Thema von lordcroc · begonnen am 22. Mär 2005 · letzter Beitrag vom 23. Mär 2005
Antwort Antwort
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
csa

Registriert seit: 22. Feb 2005
Ort: Wiesbaden
14 Beiträge
 
Delphi 2006 Professional
 
#2

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

  Alt 23. Mär 2005, 11:42
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:

SELECT DBMS_LOB.GETLENGTH(<fieldname>) FROM <tablename>; Gruß
Christoph
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:54 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