Obraz dodany do bazy danych

0

Witam,

Zrobiłem sobie bazę danych w access'ie, i pole zdjęcie które jest obiektem OLE.
W formularzu mam ładowanie obrazu z pliku:

if OpenDialog1.Execute then
begin
    Dodaj.Picture.LoadFromFile(OpenDialog1.FileName);
end;

Jak powinno wyglądać zapytanie sql żeby to zdjęcie zostało zapisane w bazie?

Na razie kombinuje w tę stronę...

ADOQuery1.SQL.Add('INSERT INTO cos (zdjecie) VALUES ("'+Dodaj1.Picture.LoadFromFile(OpenDialog1.FileName)+'");');
0

czym jest dodaj ?

generalnie to BLOB przez FieldByName i LoadFromFile albo przez TMemoryStream,
jesli chodzi o obiekt OLE to powinien byc obslugiwany albo przez kontener albo recznie (tez sprowadza sie do strumienia bajtow).

0

dodaj to tdbimage, użyłem go bo chciałem załadować zdjęcie i od razu mam podgląd na to zdjęcie.

A co do tego co napisałeś to nie bardzo wiem o co chodzi, ale zaraz będę googlował, może coś znajde.

0

Ok, powiedzmy że dodałem do bazy zdjęcie. Teraz jakim poleceniem wyświetlić to zdjęcie w TDBImage?

0

Jak mamy jakies zapytanie select do tabeli parametrow to wystraczy do strumienia i potem z dbimage LoadFromStream (che che przypomina mi sie przyklad DB z FISHFACT z Delphi 3.0 gdzie to wyklikano, teraz na 100% tez tak mozna)

0

Masz tu przykład do MSSQL jak sobie przerobisz to ci zadziała:

Odczyt:

Var
MS     : TMemoryStream;
begin
MS := TMemoryStream.Create();
(Data.FieldByName('foto')as TBlobField).SaveToStream(MS);

if MS.Size > 0 then MS.SaveToFile(ExtractFilePath(Application.ExeName)+'Foto.jpg');
MS.Free;

Data.Close;

if FileExists(ExtractFilePath(Application.ExeName)+'Foto.jpg') then
Image1.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'Foto.jpg')
else
Image1.Picture.Graphic := Nil;

//Ewentualnie ładujesz prosto z TMemoryStream przez Image1.Picture.LoadFromStream

1 użytkowników online, w tym zalogowanych: 0, gości: 1