AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Blob in DB Speichern
Thema durchsuchen
Ansicht
Themen-Optionen

Blob in DB Speichern

Ein Thema von RStorm · begonnen am 13. Feb 2008 · letzter Beitrag vom 14. Feb 2008
Antwort Antwort
Benutzerbild von peschai
peschai

Registriert seit: 15. Feb 2004
Ort: Göppingen
270 Beiträge
 
Delphi XE5 Professional
 
#1

Re: Blob in DB Speichern

  Alt 14. Feb 2008, 05:41
Hallo
Schematisch in etwa so

"DataSet" symbolisiert deine Tabelle ...

1.) Daten in Stream zwischenlagern
2.) Zum schreiben öffnen mit "Edit"
3.) Stream in Blobfield schreiben
4.) Schreiben abschliessen mit "Post"

Delphi-Quellcode:
function MyObject.FieldWriteAsBlob(const FieldName:String;Const aStream:TStream):Boolean;
var
  j1:TField;
begin
  Result := False;
  j1 := Nil;
  Try
    if Assigned(DataSet) then
      begin
        j1 := DataSet.FieldByName(FieldName);
        If assigned(j1) then
          begin
            if j1.IsBlob then
               begin
                 DataSet.Edit;
                 if Assigned(aStream)
                   then TBlobField(j1).LoadFromStream(aStream)
                   else TBlobField(j1).Clear;
                 DataSet.Post;
                 Result := True;
               end;
          end;
        end;
    except
      on e:exception do
        begin
          Result := False;
          DataSet.Cancel;
          //.... Exception melden ?
        end;
    end;
end;

procedure MyObject.btnPictureWriteClick(Sender: TObject);
var
  ms1:TMemoryStream;
  s2:STring;
  i9:integer;
begin
  // local init
  ms1 := Nil;
  s2 := '';
  i9 := 0;
  { Action }
  try
    try
      if Assigned(DataSet) then
        begin
          if Not(DataSet.ReadOnly) then
            begin
              DataSet.Activate;
              ms1 := TMemoryStream.Create;
              if OpenPictureDialog1.Execute then
                begin
                  ms1.LoadFromFile(OpenPictureDialog1.FileName);
                  ms1.Seek(0, soFromBeginning);
                  MyObject.FieldWriteAsBlob('BlobFeldName',ms1);
                  ms1.Clear;
                end;
            end;
        end;
    except
      on E:Exception do
        begin
          s2 := e.Message;
          // ....
        end;
    end;
  finally
    FreeAndNil(ms1);
  end;
end;
Peter Schaible
  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 14:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz