InterBase i BLOB

1 отговора 99 прегледа
#1

InterBase i BLOB

Zdraveite, sorry za typiq vypros ama kato gledah dokumentaciqta za BLOB neshto ne razbrah slednoto:
Znachi primerno imam si edna tablica s tri koloni:
Col1 - CHAR(30), Col2 - CHAR(30), Col3 - BLOB
iskam da zapisha v bazata edin tzql red t.e neshto takova:

INSERT INTO TestTable (Col1,Col2,Col3) VALUES (userName, userCar, userPhoto)

tuk pitankata mi e slednata - znachi na men mi trqbva da moga da vkarvam vsevyzmojni vidove snimki - bmp, jpg, GIF i drugi. Kak obache da zaredq v promenlivata userPhoto sydyrjanieto na snimkata. V dokumentaciqta pishe nqkakvi chudesii za tozi BLOB ot sorta na INSERT CURSOR ....; OPEN BLOB; CLOSE BLOB!!!
Ako nqkoi moje da pokaje kak gore dolu trqbva da izglejda edna takava zaqvka shte mu byda mnogo blagodaren.
Obshto vzeto s komponentite v Delphi moje da se popreskochi tozi problem, no se nalaga da se prekarva snimkata prez otdelen komponent vyrzan kym bazata, koeto mi se shte da preskocha po nqkakyv nachin.

Отговор
в отговор на Alien #2

Eto i edno prilicno reshenie

Kakto se kazva ako sam ne si pomognesh nikoi ne moje da ti pomogne :-)
Eto edno reshenie, koeto pozvolqva da se vkara v BLOB vsichko koeto iskame (Text, kartinki, WAV i dr.). Estestveno izpolzvat se komponenti na Delphi, no podobni neshta bi trqbvalo da ima vyv vsichki vizualni ezitzi.

procedure TForm1.Button2Click(Sender: TObject);
var
PicStream: TStream;
begin
PicStream:=TFileStream.Create(BLOBFile,fmOpenRead);
IBSQL1.SQL.Add('INSERT INTO storage (DiskNo, PicType, PicDesc, SRC) VALUES ('''+Edit4.Text+''', '''+Edit5.Text+''', '''+Edit6.Text+''', :PicBLOB)');
IBSQL1.Prepare;
//IBSQL1.Params.ByName('PicBLOB').LoadFromFile(BLOBFile); moje i taka vmesto LoadFromStream
IBSQL1.Params.ByName('PicBLOB').LoadFromStream(PicStream);
IBSQL1.ExecQuery;
PicStream.Free;
end;

Отговор