Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datei in Mysql Datenbank speichern (https://www.delphipraxis.net/181115-datei-mysql-datenbank-speichern.html)

Bladefire 17. Jul 2014 00:57

Datenbank: mysql • Version: 5.6 • Zugriff über: Firedac

Datei in Mysql Datenbank speichern
 
Hallo,

ich suche eine möglichkeit wie ich eine Datei in eine mysql datenbank per firedac speichern kann.

Wie kann man dies verwirklichen?

Lg Simon

Perlsau 17. Jul 2014 01:22

AW: Datei in Mysql Datenbank speichern
 
  1. Hast du ein Blobfeld erstellt?
  2. Wenn ja, hast du ein Query, das mit der Tabelle verbunden ist, in der sich das Blobfeld befindet?
  3. Befindet sich das Query im Edit-Modus?
  4. Wenn ja, kannst du mit folgender Function arbeiten:
Delphi-Quellcode:
Function TDatMod.FileToBlob(Feld: TField; Datei: String): Boolean;
Var
   S    : TStream;
   FileS : TFileStream;

begin
   Result := False;
   If Not FileExists(Datei) Then Exit;

   S := Feld.DataSet.CreateBlobStream(Feld, bmReadWrite);

   Try
     FileS := TFileStream.Create(Datei, fmOpenRead);
     S.CopyFrom(FileS, FileS.Size);
     Result := True;

   Finally
     FileS.Free;
     S.Free;
   End;
end;
Nicht vergessen, danach Query.Post anzugeben, sonst wird die Datei zwar in das Blobfeld hineingeschrieben, aber nicht gespeichert :stupid:

Bladefire 18. Jul 2014 02:06

AW: Datei in Mysql Datenbank speichern
 
Danke für deine Antwort.

1. Ein Blobfeld ist in der mysql datenbank vorhanden.
2. der query ist mit der tabelle verbunden
3. wie bringe ich den query in den edit modus? ("fdquery1.edit;"?)

Ich habe bisher größteils nur mit fdconnection1.execsql gearbeitet da ich noch nicht viel abfragen musste.

Wie müsste ich vorgehen wenn das programm die id 23 in der Datenbank hat und das blob feld den namen "blob-feld".

Du würdest mir damit einen rießigen gefallen machen.

lg Simon

Perlsau 18. Jul 2014 02:36

AW: Datei in Mysql Datenbank speichern
 
Ich kann mit deiner Schilderung nicht viel anfangen. Dein Programm hat die Id 23 in der Datenbank? Meine Programme haben niemals eine Id in irgend einer Datenbank ... aber die Tabellen in meinen Datenbanken verfügen größtenteils über Id-Nummern, gewöhnlich fortlaufend und via AutoInc erstellt.

Schau dir doch einfach mal die Methoden deiner Query-Komponente in der Online-Hilfe an: Edit, Append, Post und Cancel – all das, was auch der DB-Navigator macht. Ich will dir hier nicht dein Programm schreiben oder dir Sachen erklären, die in gängigen Tutorials schon bis zum Abwinken erklärt wurden ... diese Arbeit ist dir vorbehalten. Und zudem ruft mein Bett ganz laut nach mir ...

Wenn du dich mit Datenbanken noch nicht so gut auskennst, empfehle ich dir die Tutorials des Delphi-Treffs.

mkinzler 18. Jul 2014 06:37

AW: Datei in Mysql Datenbank speichern
 
Zitat:

Dein Programm hat die Id 23 in der Datenbank?
Er scheint Programme in der Datenbank abgelegt zu haben.

Zitat:

1. Ein Blobfeld ist in der mysql datenbank vorhanden.
2. der query ist mit der tabelle verbunden
Zitat:

3. wie bringe ich den query in den edit modus? ("fdquery1.edit;"?)
Ja, wenn die entsprechenden Abfragen hinterlegt sind.

Was willst Du genau tun? Einen Blob aus der Datenbank laden? (Dann wäre DataSet.Edit ja falsch) Oder einen vorhanden Datensatz ändern?

Perlsau 18. Jul 2014 16:42

AW: Datei in Mysql Datenbank speichern
 
Zitat:

Zitat von mkinzler (Beitrag 1265857)
Was willst Du genau tun? Einen Blob aus der Datenbank laden? (Dann wäre DataSet.Edit ja falsch) Oder einen vorhanden Datensatz ändern?

Hat er doch bereits beschrieben:
Zitat:

ich suche eine möglichkeit wie ich eine Datei in eine mysql datenbank per firedac speichern kann.

Bladefire 19. Jul 2014 02:28

AW: Datei in Mysql Datenbank speichern
 
Ich habe mich wohl etwas falsch ausgedrückt, nvm.

ich habs jetzt mit deiner funktion gelöst.

Danke

Lg Simon


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:50 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