Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Bild in Sql DB speichern (https://www.delphipraxis.net/67272-bild-sql-db-speichern.html)

Schodn 12. Apr 2006 08:15

Datenbank: Sql Server • Version: xx • Zugriff über: ado

Bild in Sql DB speichern
 
Code:
Stream := TMemoryStream.Create;
                Stream.Clear;
                Stream.LoadFromFile(c:\bild.jpg);
                str_1 := PChar(Stream.Memory);
                aqTmp.Recordset.Collect['pic'] := str_1;
                Stream.Clear;
                Stream.Free;
                Stream.Destroy;

pic - feld ist IMAGE

das funktioniert aber nicht so richtig. wer kann mir hier weiterhelfen?

Schodn 12. Apr 2006 09:40

Re: Bild in Sql DB speichern
 
Problem gelöst

Feld - Datentyp in der Sql Server Datenbank : Image

Speichern in der DB
Delphi-Quellcode:
Image.Picture.LoadFromFile(s_menuepunkt_1_bild);
aqTmp.FieldByName('pic').Assign(Image.Picture);

Laden aus der DB
Delphi-Quellcode:
Image.Picture.Assign(aqTmp.FieldByName('pic'));

Schodn 12. Apr 2006 11:15

Re: Bild in Sql DB speichern
 
1 Frage noch

Muss ich da wieder was freigeben?

er läd mir jedesmal das gleiche bild rein, obwohl er jedesmal einen anderen pfad bekommt.

franktron 12. Apr 2006 11:25

Re: Bild in Sql DB speichern
 
Das geht aber anders.

So ist richtig.

Delphi-Quellcode:
  Stream:=DB.CreateBlobStream(DB.FieldByName('name'),bmRead);
  try
   Stream.LoadFromFile('bild.jpg');
  finally
   Stream.Free;
  End;

Schodn 12. Apr 2006 12:10

Re: Bild in Sql DB speichern
 
Speichern

Delphi-Quellcode:
Stream := TMemoryStream.Create;
Stream.Clear;
Stream.LoadFromFile('C:\bild.jpg');
try
   aqTmp.CreateBlobStream(aqTmp.FieldByName('pic'),bmWrite) := Stream;
finally
   Stream.Free;
End;
hier bei speichern blick ich nicht durch



Laden

Delphi-Quellcode:
Stream := TMemoryStream.Create;
Stream.Clear;
try
   Stream := aqTmp.CreateBlobStream(aqTmp.FieldByName('pic'),bmRead);
finally
   Stream.Free;
End;

franktron 12. Apr 2006 12:16

Re: Bild in Sql DB speichern
 
Sorry das muss

Delphi-Quellcode:
  Stream:=DB.CreateBlobStream(DB.FieldByName('name'),bmWrite); << hier änderung
  try
    Stream.LoadFromFile('bild.jpg');
  finally
    Stream.Free;
  End;
Heisen

Und du brauchst kein MemoryStream wenn du soch einen haben willst sieht das so aus


Delphi-Quellcode:
  Stream1:=TMemorStream.Create;
  Stream1.LoadFromFile('bild.jpg');
  try
    Stream:=DB.CreateBlobStream(DB.FieldByName('name'),bmWrite); << hier änderung
    try
      Stream1.seek(0,0);
      Stream.CopyFrom(Stream1,Stream1.Size);
    finally
      Stream.Free;
    End;
  finally
   Stream1.Free;
  End;

Schodn 12. Apr 2006 13:25

Re: Bild in Sql DB speichern
 
Wenn ich das mit assign mache, was muss ich da freigeben, das ich nicht bei jedem datensatz das gleich bild drinn habe?

i komm mit dem anderen nicht zusammen, und müsste zu viel ändern

Schodn 13. Apr 2006 09:14

Re: Bild in Sql DB speichern
 
img_main_logo.Picture.Assign(aqTmp.FieldByName('bi ld'));

Warum kann ich hier nur *.Bmp verwenden aber keine *.Jpg

ich brauche beide formate. was kann ich da tun


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