AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Bild in MySQL (Blob) mit mysql.pas speichern
Thema durchsuchen
Ansicht
Themen-Optionen

Bild in MySQL (Blob) mit mysql.pas speichern

Ein Thema von Morfio · begonnen am 9. Apr 2004 · letzter Beitrag vom 27. Feb 2020
Antwort Antwort
Seite 1 von 3  1 23      
Morfio

Registriert seit: 15. Dez 2003
53 Beiträge
 
#1

Bild in MySQL (Blob) mit mysql.pas speichern

  Alt 9. Apr 2004, 14:50
Hallo,

ich habe jetzt überall gesucht, aber keine Lösung gefunden. Ich benutze die mysql.pas von http://www.fichtner.net/delphi/mysql.delphi.phtml . Nun möchte ich in einer MySQL-Datenbank innerhalb eines Blob-Feldes ein Bild speichern und das auch anzeigen und ändern.

Kennt jemand ein Tutorial, wie man das macht?

Vielen Dank,

Morfio ...
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Bild in MySQL (Blob) mit mysql.pas speichern

  Alt 9. Apr 2004, 16:48
Zitat von Morfio:
Kennt jemand ein Tutorial, wie man das macht?
Nicht konkret zum Speichern von Bildern, aber zum Zugriff via mysql.pas hab ich mal was geschrieben: http://www.delphipraxis.net/internal...l+api+tutorial

Bilder speichern sollte gehen, indem du dein Bild per Stream in einen String umwandelst und diesen via mysql_real_query an die Datenbank schickst.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Morfio

Registriert seit: 15. Dez 2003
53 Beiträge
 
#3

Re: Bild in MySQL (Blob) mit mysql.pas speichern

  Alt 9. Apr 2004, 17:11
Hi,

danke für die Antwort. Wie konvertiere ich denn einen TFileStream (ich denke, den brauche ich) in einen String? Finde keine Funktion dafür.

Viele Grüße,

Morfio ...
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Bild in MySQL (Blob) mit mysql.pas speichern

  Alt 9. Apr 2004, 17:40
Mit dem Filestream öffnest du die Datei und liest die Daten in einen Stringbuffer (via Read).
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Morfio

Registriert seit: 15. Dez 2003
53 Beiträge
 
#5

Re: Bild in MySQL (Blob) mit mysql.pas speichern

  Alt 9. Apr 2004, 19:55
Hallo,

ok, mein Versuch zeigt nichts an, was kann denn daran falsch sein (ich mache das zum ersten Mal):

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Stream: TFileStream;
  S: String;
begin
  Stream := TFileStream.Create(ExtractFilePath(ParamStr(0)) + 'test.jpg', fmOpenRead or fmShareDenyNone);
  try
    Stream.Read(S, Length(S));
    Memo1.Text := S;
  finally
    Stream.Free;
  end;
end;
Vielen Dank für Eure Hilfe,

Morfio ...
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Bild in MySQL (Blob) mit mysql.pas speichern

  Alt 9. Apr 2004, 20:11
Versuchs mal so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Stream: TFileStream;
  S: String;
begin
  Stream := TFileStream.Create('c:\p1.jpg', fmOpenRead or fmShareDenyNone);
  try
    SetLength(s, Stream.Size);
    Stream.Read(S, Stream.Size);
    Memo1.Text := S;
  finally
    Stream.Free;
  end;
end;
Dass du in dem Memo nicht viel siehts, liegt daran, dass irgendwann ein Nullzeichen auftaucht. Windows erkennt so das Ende von Strings und beendet die Ausgabe im Memo.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Morfio

Registriert seit: 15. Dez 2003
53 Beiträge
 
#7

Re: Bild in MySQL (Blob) mit mysql.pas speichern

  Alt 9. Apr 2004, 20:24
Hi,

vielen Dank. Jetzt steht im Memo ein (komisches) Zeichen. Ich denke, es funktioniert jetzt. Werde es mal ausprobieren und in einer DB speichern.

Vielen Dank,

Morfio ...
  Mit Zitat antworten Zitat
Morfio

Registriert seit: 15. Dez 2003
53 Beiträge
 
#8

Re: Bild in MySQL (Blob) mit mysql.pas speichern

  Alt 10. Apr 2004, 12:50
Hallo nochmal,

in dem folgenden Abschnitt muß noch irgendwo ein Fehler sein, denn MySQLCC und PHP sagen mir beide, dass das gespeicherte Bild fehlerhaft ist:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
   Stream: TFileStream;
    S: String;
    query: String;
begin
   Stream := TFileStream.Create(ExtractFilePath(ParamStr(0)) + 'test.jpg', fmOpenRead or fmShareDenyNone);
    try
       SetLength(S, Stream.Size);
       Stream.Read(S, Stream.Size);
    finally
       Stream.Free;
    end;
   query := 'INSERT INTO Bild (Name, Bild) VALUES (' + QuotedStr('testbild') + ', ' + QuotedStr(S) + ')';
    mysql_real_query(myCon, PChar(query), Length(query));
end;
Das kann ja eigentlich kein großer Fehler mehr sein. Woran könnte es denn vielleicht noch liegen?

Vielen Dank,

Morfio ...

PS: Das Bild "test.jpg" ist nicht fehlerhaft, IrfanView kann es ohne Probleme vollständig anzeigen.
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#9

AW: Re: Bild in MySQL (Blob) mit mysql.pas speichern

  Alt 21. Feb 2020, 15:40
Hallo nochmal,

in dem folgenden Abschnitt muß noch irgendwo ein Fehler sein, denn MySQLCC und PHP sagen mir beide, dass das gespeicherte Bild fehlerhaft ist:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
   Stream: TFileStream;
    S: String;
    query: String;
begin
   Stream := TFileStream.Create(ExtractFilePath(ParamStr(0)) + 'test.jpg', fmOpenRead or fmShareDenyNone);
    try
       SetLength(S, Stream.Size);
       Stream.Read(S, Stream.Size);
    finally
       Stream.Free;
    end;
   query := 'INSERT INTO Bild (Name, Bild) VALUES (' + QuotedStr('testbild') + ', ' + QuotedStr(S) + ')';
    mysql_real_query(myCon, PChar(query), Length(query));
end;
Das kann ja eigentlich kein großer Fehler mehr sein. Woran könnte es denn vielleicht noch liegen?

Vielen Dank,

Morfio ...

PS: Das Bild "test.jpg" ist nicht fehlerhaft, IrfanView kann es ohne Probleme vollständig anzeigen.
Probiere mal "QuoteString" aus der mysql.pas statt QuotedStr.

Benutzt Du noch eine ältere Delphi-Version(<=Delphi 2007)?

Geändert von samso (21. Feb 2020 um 15:50 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.338 Beiträge
 
Delphi 12 Athens
 
#10

AW: Re: Bild in MySQL (Blob) mit mysql.pas speichern

  Alt 21. Feb 2020, 16:57
Das QuoteStr von Delphi war sowieso noch niemals für SQL vorgesehen, denn es arbeitet nach Standard der Pascal-Strings, also behandelt ausschließlich das '
und vor allem ein \ oder Steuerzeichen machen danach weiterhin viel Spaß.

Außerdem wird es hier ab Delphi 2009 schön knallen, wenn man Binärdaten in einen String/UnicodeSting packt, denn Dabei werden natürlich Bytes verändert, entsprechend der aktuellen Systemsprache (ANSI>Unicode)
https://www.delphipraxis.net/203328-...ifizieren.html
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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:07 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