Wstawienie bitmapy do pola BLOB|MySQL

0

Posluguje sie komponentami zeos i chce zapisac bitmape w bazie. Przypisalem do zmiennej

var
rys:TBitMap
stream:TBlobStream
begin
rys:=TBitMap.Create;
rys.LoadFromFile('c:\testa.bmp');
...

i nie wiem jak przekazac to do bazy. Probowalem wielu sposobow ale za kazdym razem blad.
Z gory dziekuje i pozdrawiam.

0

Przyłączam się do prośby kolegi, może ktoś podać jakiś przykład? jak to wykonać?
EDIT:
Znalazłęm rozwiązanie na http://edn.embarcadero.com/article/27462

test.ZTable1.TableName:='pytania';
test.ZTable1.Open;
test.ZTable1.Insert;
test.ZTable1.FieldByName('grafika').SetFieldType(ftBlob);
BS := test.ZTable1.CreateBlobStream(test.ZTable1.FieldByName('grafika'),bmWrite); 
Image1.Picture.Graphic.SaveToStream(BS);
TBlobField(test.ZTable1.FieldByName('grafika')).LoadFromStream(BS);
test.ZTable1.Post;
test.ZTable1.Close;
BS.Free;

Problem tylko w tym, że co prawda grafika się dodaje, ale jako nowy record, mam wczesniej

test.ZQuery1.SQL.Text:=zapytanie;

dodające treść, i jak robię

test.ZQuery1.ExecSQL();
test.ZTable1.Post;

to mi dodaje i treść i grafikę (to wiadomo dlaczego), pytanie jak to połączyć w jedno zapytanie?
coś w stylu:

test.ZQuery1.SQL.Text:=test.ZQuery1.SQL.Text+test.ZTable1.Post
0
procedure TForm1.Button2Click(Sender: TObject);
var
fs: TFileStream;
BlobField: TBlobField;
begin
fs := TFileStream.Create('C:\Line-Card.pdf', fmOpenRead);
ADOQuery1.SQL.Text := 'SELECT * FROM MachineParts WHERE TAG_PART_NUMBER = ''M00000100''';
ADOQuery1.Active := True;
BlobField := ADOQuery1.FieldByName('DRAWING') AS TBlobField;
try
  ADOQuery1.Edit;
  BlobField.LoadFromStream(fs);
  ADOQuery1.Post;
finally
  fs.Free;
  ADOQuery1.Active := false;
end;
end;

co prawda uzyte jest tu ADO ale na zeosach tez bedzie działać

0

Wielkie dzięki puchi - działa idealnie :-) właśnie o coś takiego mi chodziło :-)

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