AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Bild im Blob Feld abspeichern
Thema durchsuchen
Ansicht
Themen-Optionen

Bild im Blob Feld abspeichern

Ein Thema von Moony · begonnen am 9. Okt 2008 · letzter Beitrag vom 21. Okt 2008
Antwort Antwort
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#1

Bild im Blob Feld abspeichern

  Alt 9. Okt 2008, 10:17
Datenbank: DB2 • Zugriff über: TADOConnection
Hallo zusammen,

ich habe ein bestehendes Programm welches unterschiedliche Anbindungen zu unterschiedlichen Datenbanken ermöglicht. Nun habe ich eine DB2 Anbindung. Das läuft soweit ganz gut.

Mein Problem ist, ich kann zwar Bilder aus der Datenbank lesen und als File auf der Festplatte abspeichern, aber ich kann keine Bilder von der Festplatte in die Blobfelder schreiben.

Das Schreiben erfolgt folgendermaßen:

vorher mache ich eine SQL Anweisung auf einen bestimmten Datensatz. Wenn der Recordcount dann 0 ist, wird ein Append + Edit ausgeführt, ansonsten der folgende Code:
Delphi-Quellcode:
var BF : TBlobField
    F : String;
begin
  ...
  my.Table.Edit;
  BF := mytable.FieldByName(myField) As TBlobField;

  if FileExists(F) then // Datei wird vorher geholt und abgefragt
  begin
    BF.LoadFromFile(F);

    try
      mytable.Post;
    except
      Showmessage('Error while saving blob!');
    end;
  end
  else begin
    myTable.Cancel;
    Showmessage('File not found: ' + F);
  end;
So, das ist es im groben. Die Datenbank kommt weder mit einem Fehler noch mit was anderem zurück. Aber das Bild wird nicht dort gespeichert. Die geladene Blobgröße ist auf jeden Fall richtig und das Bild existiert auch in dem Verzeichnis.

Hoffe mir kann da jemand weiterhelfen.

Gruß, Moony
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

Re: Bild im Blob Feld abspeichern

  Alt 9. Okt 2008, 10:30
Lies Dir das hier mal durch: Streaming Bitmaps and other Binary Data to BLOB Fields
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Bild im Blob Feld abspeichern

  Alt 9. Okt 2008, 11:24
Danke, habe ich mir durchgelesen, aber o ganz konnte mich das nicht weiterbringen. Habe das jetzt folgendermaßen gemacht, aber immer noch das gleiche Ergebnis:

Delphi-Quellcode:
...
FS := TMemoryStream.Create;
try
  FS.LoadFromFile(F);
  _BF := mytable.FieldByName(myField); // _BF : TField
  BS := mytable.CreateBlobStream(_BF, bmWrite);
  FS.SaveToStream(BS);
finally
  FS.Free;
end;
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#4

Re: Bild im Blob Feld abspeichern

  Alt 9. Okt 2008, 11:31
Mit DB2 kenn ich mich leider nicht aus. Anderer Link: http://entwickler-forum.de/showthread.php?p=161848. Hier wird statt Push(Src.Write) Pull(Dest.CopyFrom) benutzt, vielleicht hilft das ja.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Bild im Blob Feld abspeichern

  Alt 9. Okt 2008, 12:00
Also irgendwie fruchtet das alles nicht.....
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Bild im Blob Feld abspeichern

  Alt 9. Okt 2008, 13:26
Habe das jetzt folgendermaßen geschafft das Bild dort einzuspeichern:

Delphi-Quellcode:
MS := TMemoryStream.Create;
try
  MS.LoadFromFile(F);
  mytable.SQL.Clear;
  mytable.SQL.Add('UPDATE ' + TableName + ' SET ' + PhotoField + ' = ');
  mytable.SQL.Add('(:' + PhotoField + ')');
  mytable.SQL.Add(' WHERE ' + IndexField + ' = ''' + IndexValue + '''');
  mytable.Parameters.ParamByName(PhotoField).LoadFromStream(MS, ftBlob);
  try
    mytable.ExecSQL;
  except
    MessageDlg(SysErrorMessage(GetLastError()), mtError, [mbOK], 0);
  end;
finally
  MS.Free;
end;
Gruß, und danke für die Denkanstöße.

Moony
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Bild im Blob Feld abspeichern

  Alt 21. Okt 2008, 11:50
Hallo zusammen, mein letzter Beitrag hier besagt, dass die aufgelistete Routine funktioniert, das hat sie auch. Aber warum auch immer geht das jetzt nicht mehr. Beim Ausführen des SQL Befehls tritt eine Exception auf.

Kann mir da jemand dringend weiterhelfen?????

Danke & Gruß, Moony
Ich weiß, daß ich nichts weiß! Sokrates
  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 20:34 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