AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi PDF-Datei (BLOB) in eine MySql-Tabelle speichern und lesen (Delphi 2010)

PDF-Datei (BLOB) in eine MySql-Tabelle speichern und lesen (Delphi 2010)

Ein Thema von Jürgen Paulus · begonnen am 20. Okt 2010 · letzter Beitrag vom 3. Nov 2011
Antwort Antwort
Seite 1 von 2  1 2   
Jürgen Paulus

Registriert seit: 28. Sep 2010
Ort: Wien
10 Beiträge
 
Delphi 2010 Professional
 
#1

PDF-Datei (BLOB) in eine MySql-Tabelle speichern und lesen (Delphi 2010)

  Alt 20. Okt 2010, 15:31
Datenbank: MySql • Version: 4.1.22 • Zugriff über: DBEXPRESS
Da bei mir der folgende Code

Delphi-Quellcode:
SQLDataSet1.CommandText := sql;
SQLDataSet1.Active := true;
ClientDataSet1.Active := true;
Blob := ClientDataSet1.FieldByName ('f03') AS TBlobField;
ClientDataSet1.Edit;
Blob.LoadFromStream (str_PDF);
ClientDataSet1.FieldByName ('f04').AsInteger := 100;
ClientDataSet1.Post;
ClientDataSet1.Active := false;
SQLDataSet1.Active := false;
nicht funktionierte, habe ich folgende Lösung gefunden:

Delphi-Quellcode:
sql := 'insert into t01_r03' +#32
      +'set f01=' +ID +',' +#32
          +'f03=:f03';

sql_t01r03.Params.ParamByName('f03').LoadFromStream(str_PDF, ftBlob);

if sql_t01r03.Sql.Count = 0 then
  sql_t01r03.SQL.Add (sql)
else
  sql_t01r03.Sql[0] := sql;

sql_t01r03.ExecSQL;
Zum wieder einlesen des Blob funktioniert folgender Code:
Delphi-Quellcode:
sql := 'select * from t01_r03' +#32
       +'where f01=' +ID;

sql_query.Sql.Clear;
sql_query.SQL.Add (sql);
sql_query.Open;

Stream := sql_query.CreateBlobStream (sql_query.FieldByName('f03'),bmRead);
MemoryStream.LoadFromStream (Stream);
MemoryStream.SaveToFile (ID+'.pdf');

sql_query.Close;
Jürgen Paulus
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.169 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: PDF-Datei (BLOB) in eine MySql-Tabelle speichern und lesen (Delphi 2010)

  Alt 20. Okt 2010, 16:21
Und wo ist jetzt die Frage


In der nicht funktionierenden Lösung ist der Typ von str_PDF unklar und wie dieser gefüllt wird.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Jürgen Paulus

Registriert seit: 28. Sep 2010
Ort: Wien
10 Beiträge
 
Delphi 2010 Professional
 
#3

AW: PDF-Datei (BLOB) in eine MySql-Tabelle speichern und lesen (Delphi 2010)

  Alt 20. Okt 2010, 16:46
Und wo ist jetzt die Frage


In der nicht funktionierenden Lösung ist der Typ von str_PDF unklar und wie dieser gefüllt wird.
var
str_PDF : TMemoryStream;

Nicht wirklich eine Frage, habe schließlich eine Lösung gefunden, nachdem ich den ganzen Tag damit verbracht habe.
Aber ja, warum das mit dem ClientDataSet nicht funktioniert, würde mich schon interessieren.
Jürgen Paulus
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.169 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: PDF-Datei (BLOB) in eine MySql-Tabelle speichern und lesen (Delphi 2010)

  Alt 20. Okt 2010, 19:13
Aber ja, warum das mit dem ClientDataSet nicht funktioniert, würde mich schon interessieren.
AFAIK kann das Clientdataset keine Daten in einer DB speichern.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Jürgen Paulus

Registriert seit: 28. Sep 2010
Ort: Wien
10 Beiträge
 
Delphi 2010 Professional
 
#5

AW: PDF-Datei (BLOB) in eine MySql-Tabelle speichern und lesen (Delphi 2010)

  Alt 21. Okt 2010, 08:22
Zitat:
AFAIK kann das Clientdataset keine Daten in einer DB speichern.
Wollte es gar nicht einfügen, nur ändern, aber das hat auch nicht funktioniert. Möglicherweise hatte ich noch "cds.ApplyUpdates(0)" http://www.tek-tips.com/faqs.cfm?fid=4722 aufrufen sollen.
Jürgen Paulus
  Mit Zitat antworten Zitat
Freiwilderer

Registriert seit: 26. Mai 2009
163 Beiträge
 
Delphi 7 Enterprise
 
#6

AW: PDF-Datei (BLOB) in eine MySql-Tabelle speichern und lesen (Delphi 2010)

  Alt 3. Nov 2011, 08:42
hi,
ich weiß, dass der Beitrag schon etwas älter ist, aber vielleicht bringts ja doch was nochmal nachzufragen.
und zwar. Ich versuche auch gerade eine PDF Aus einem VarBinary(Max) zu lesen. Habe es genau so gemacht, wie unten beschrieben, aber wenn ich die PDF dann öffnen will, sagt der Foxit Reader: format error: not a PDF or corrupted

Delphi-Quellcode:

procedure TForm.ViewPDF;
var
   ts: TStream;
   ms: TMemoryStream;
begin
   ts := TStream.Create;
   ts := dm.qQuery.CreateBlobStream(dm.qQuery.Fieldbyname('Datei'),bmRead);
   ms := TMemoryStream.Create;
   ms.LoadFromStream(ts);
   ms.SaveToFile('C:\test3.pdf');
end
was mach ich hier falsch?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.536 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: PDF-Datei (BLOB) in eine MySql-Tabelle speichern und lesen (Delphi 2010)

  Alt 3. Nov 2011, 08:50
Du baust Dir Speicherlecks. Und IIRC musst Du zuerst "zurückspulen". Wie ist es so?
Delphi-Quellcode:
procedure TForm.ViewPDF;
var
   ts: TStream;
   ms: TMemoryStream;
begin
  ts := dm.qQuery.CreateBlobStream(dm.qQuery.Fieldbyname('Datei'),bmRead);
  try
    ms := TMemoryStream.Create;
    try
      ts.Position := 0;
      ms.LoadFromStream(ts);
      ms.SaveToFile('C:\test3.pdf');
    finally
      ms.Free;
    end;
  finally
    ts.Free;
  end;
end
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
Freiwilderer

Registriert seit: 26. Mai 2009
163 Beiträge
 
Delphi 7 Enterprise
 
#8

AW: PDF-Datei (BLOB) in eine MySql-Tabelle speichern und lesen (Delphi 2010)

  Alt 3. Nov 2011, 08:53
hi,
danke für die schnelle Antwort, leider bewirkt das genau das selbe.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.536 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: PDF-Datei (BLOB) in eine MySql-Tabelle speichern und lesen (Delphi 2010)

  Alt 3. Nov 2011, 08:56
Wie groß ist denn die resultierende Datei? Vielleicht ist CopyFrom besser geeignet als LoadFromStream, aber das ist nur geraten.
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
Freiwilderer

Registriert seit: 26. Mai 2009
163 Beiträge
 
Delphi 7 Enterprise
 
#10

AW: PDF-Datei (BLOB) in eine MySql-Tabelle speichern und lesen (Delphi 2010)

  Alt 3. Nov 2011, 09:02
naja, hätte vielleicht erwähnen können, dass sie zu klein ist ...

also ich hab diese PDF in einem VarBinary gespeichert. Es gibt eine Funktion, die auch funktioniert, die die Datei in die Zwischenablage kopiert. Da hat sie 298KB. wenn ich das über SaveToFile versuche kommen nur 3KB dabei raus.
Ich hab eben ms.CopyFrom(ts,0); probiert, leider ebenfalls nur 3KB
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 15:08 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