Sabtu, 17 Oktober 2015

Cara menyimpan dan menampilkan gambar dari MySQL menggunakan Delphi 7 dan Zeos

Berikut adalah tutorial bagaimana cara menyimpan dan menampilkan gambar dari MySQL. Tutorial ini merupakan kelanjutan dari Cara mengelola data PhpMyAdmin Website menggunakan Delphi 7 dan ZEOS. Kita mulai dari database server yang akan digunakan pada tutorial kali ini menggunakan PhpMyAdmin dari website.


Buatlah sebuah tabel sederhana seperti berikut :
Kolom 1: index   dengan type int
Kolom 2: data_text   dengan type varchar(100)
Kolom 3: data_angka dengan type  int
Kolom 4: data_binary dengan type blob

kemudian desain form pada delphi dengan komponen

  1. ZConnection1, 
  2. ZTable1, 
  3. DataSource1, 
  4. DBGrid1, 
  5. 3 buah DBEdit, masing-masing untuk 
    1. index, 
    2. data_text 
    3. data_angka, 
  6. 6 button yang masing-masing 
    1. button untuk menambah database, 
    2. button untuk menyimpan data ke dalam database, 
    3. button untuk mengambil gambar yang akan diiputkan ke dalam database, 
    4. button untuk menghapus databse, 
    5. button untuk membaca dan menampilkan gambar, 
    6. button untuk membaca dan menyimpan ke komputer lokal
  7. Image1 untuk menapilkan gambar
  8. OpenDialog1
  9. SaveDialog1

hasilnya seperti berikut
Pada Object Inspector Zconnetion1 isikan databasename, user, password, hostname dan protocol seperti pada gambar berikut
pada ZTable1 isikan Connection dengan Zconnection1 dan pilih tabel yang hendak diakses,
pada DataSource1 isikan dataset denan ZTable1
pada DBGrid isikan datasource dengan DataSurce1
pada DBEdit1 isikan datasource dengan DataSource1 dan DataField dengan index begitu pula untuk DBEdit2 dimana DataField diisi dengan data_text dan DBEdit3 dimana DataField diisi dengan data_angka
kemudian klik 2 kali pada button 1 untuk insert data ke dalam database dengan script berikut :

procedure TForm1.Button1Click(Sender: TObject);
begin
  ztable1.Insert;
end;

pada button 2 untuk menyimpan data ke dalam database

procedure TForm1.Button2Click(Sender: TObject);
begin
  ztable1.Post;
end;

pada Button3 untuk menghapus data dari database

procedure TForm1.Button3Click(Sender: TObject);
begin
  ztable1.Delete;
end;

pada button4 untuk membuka file gambar yang akan diiputkan ke dalam database

procedure TForm1.Button4Click(Sender: TObject);
var a:TStream;
    f:TFileStream;
begin
  if opendialog1.Execute then begin
    f:=TFileStream.Create(opendialog1.FileName,fmopenread);
    a:=ztable1.CreateBlobStream(ztable1.FieldByName('data_binary'),bmwrite);
    try
      a.CopyFrom(f,f.Size);
    finally f.Free;a.Free; end;
  end;
end;

pada button5 isikan script berikut dan jangan lupa tambahkan JPEG pada Uses di atas untuk dapat membuka file JPG

procedure TForm1.Button5Click(Sender: TObject);
var a:TStream;
    jpg:TJpegImage;
begin
  a:=ZTable1.CreateBlobStream(ZTable1.FieldByName('data_binary'),bmread);
  jpg:=TJpegImage.Create;
  try
    jpg.LoadFromStream(a);
    image1.Picture.Assign(jpg);
  finally a.Free;jpg.Free; end;
end;

Pada button6 isikan script berikut untuk menyimpan gambar dari database PhpMyAdmin menjadi file ke dalam komputer lokal

procedure TForm1.Button6Click(Sender: TObject);
var a:TStream;
    f:TFileStream;
begin
  if savedialog1.Execute then begin
    a:=ZTable1.CreateBlobStream(ZTable1.FieldByName('data_binary'),bmread);
    f:=TFileStream.Create(savedialog1.FileName,fmcreate or fmopenwrite);
    try
      f.CopyFrom(a,a.Size);
    finally a.Free; f.Free; end;
  end;
end;

dan jika sukses eksekusi hasilnya sebagai berikut

12 komentar:

  1. gan ini menggunakan teknik blob stream yah ?

    BalasHapus
    Balasan
    1. tentu saja. menurut saya ini cara termudah dalam menyimpan file apapun dalam bentuk binary, termasuk gambar. :)

      Hapus
  2. soalnya kalau menggunakan blob stream ane gak paham

    BalasHapus
  3. gan kl imagenya dari webcame gmn gan?.trimakasih sblmnya

    BalasHapus
  4. kok video gk bisa di download ?

    BalasHapus
    Balasan
    1. youtube punya kebijakan sendiri, videonya tidak bisa didownload. kalo mau download googling aja cara download video youtube. banyak ko situs yang menyediakan layanan download video dari youtube, contohnya http://www.clipconverter.cc/
      mudah-mudahan bermanfaat... :)

      Hapus
  5. gan kenapa pas gue mau masukin kode button1 nya ada tulisan [Error] Unit1.pas(36): Undeclared identifier: 'ztabel1' ?

    BalasHapus
  6. gan kenapa pas saya mau masukin kode button1 ada tulisan [Error] Unit1.pas(36): Undeclared identifier: 'ztabel1' mohon bantuannya gan ?

    BalasHapus
    Balasan
    1. o. jelas error itu terjadi karena anda belum memasukkan komponen ztable dari zeos. component tersebut ada di tab zeos

      Hapus
    2. anda download ZEOSlib di https://sourceforge.net/projects/zeoslib/ lalu install komponen tersebut ke dalam delphi

      Hapus
  7. gan kenapa error mysql has gone away

    BalasHapus