Hari ini kami sharing bagaimana cara menyimpan gambar kedalam database, sebernarnya apasaja fungsinya menyimpan gambar kedalam database mengingat apabila gambar disimmpan kedalam database membuat database menjadi berat.
Contoh penerapannya adalah gambar logo profile, foto pegawai, foto asset dan lain lain
Pertanyaan kedua adalah, bagaimana supaya tidak berat ketika dipanggil menggunakan adodataset atau adoquery
Caranya adalah membatasi open sql all, pada umumnya adalah para beginner menggunakan perintah "select * from" (jangan gunakan perintah ini ) bisa diganti dengan "Select nama, alamat, handphone from t_pegawai".
Langsung praktek ya!!
silahkan buat tabel pada database anda, silahkan di copy paste :
CREATE TABLE `t_pegawai` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`nik` varchar(6) DEFAULT NULL,
`nama_pegawai` varchar(100) DEFAULT NULL,
`foto` blob,
PRIMARY KEY (`Id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;
Dibawah ini adalah perintah untuk penyimpan data dan gambar.
Function TForm1.Simpandata: boolean;
var
Filestream: TMemoryStream;
begin
Result := False;
Filestream := TMemoryStream.Create;
Image1.Picture.Graphic.SaveToStream(Filestream);
Filestream.Position := 0;
MyQuery1.Append;
MyQuery1.FieldByName('nik').AsString := EdtNIK.Text;
MyQuery1.FieldByName('nama_pegawai').AsString := EdtNama.Text;
TBlobField(MyQuery1.FieldByName('foto')).LoadFromStream(Filestream);
Filestream.Free;
MyQuery1.Post;
Result := True;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if Simpandata then
begin
ShowMessage('Data telah tersimpan');
BersihForm;
end;
end;
Nah, sekarang adalah bagaimana menampilkan gambar yang terdapat pada database. perhatikan perintah dibawah ini:
procedure TForm1.DBGrid1CellClick(Column: TColumn);
var
Stream: TStream;
JPG: TJpegImage;
begin
JPG := TJpegImage.Create;
try
Stream := MyQuery1.CreateBlobStream(MyQuery1.FieldByName('foto'), bmRead);
try
Image2.Picture.LoadFromStream(Stream);
finally
Stream.Free; // edited
end;
finally
JPG.Free;
end;
EdtNamaPegawai_Show.Text := MyQuery1.FieldByName('nama_pegawai').AsString;
end;
Function TForm1.BersihForm: boolean;
begin
Result := False;
EdtNIK.Clear;
EdtNama.Clear;
EdtPathFoto.Clear;
Image1.Picture := nil;
Result := True;
end;
Supaya tidak penasaran silahkan Download