Cara mudah mengolah database MySQL dengan Delphi menggunakan Zeos

aseli bikinan agus made


Berikut kita belajar cara sangat sederhana mengelola database MySQL menggunakan Delphi dan Zeos. Latihan ini akan sangat tidak berguna jika anda sudah mahir, tapi jangan protes dulu, artikel ini saya muat di sini karena banyak teman yang minta ke saya, karena merasa terlalu awam dengan zeos.

Mula-mula, saya berasumsi zeos sudah terinstal dengan baik pada delphi anda, kalo belum silahkan download di http://www.sourceforge.net/projects/zeoslib, lalu ikuti petunjuk instalasinya.

Saya juga berasumsi bahwa MySQL sudah berjalan pada komputer anda atau setidaknya bisa diakses sepenuhnya dari komputer anda, kalo belum silahkan download di http://dev.mysql.com/downloads/, lalu ikuti petunjuk instalasinya.

dan

Saya juga berasumsi anda sudah dapat menggunakan MySQL dengan baik, entah menggunakan MySQL Front, SQLYog, PHPMyAdmin atau apa aja, yang penting bisa ..:) selanjutnya buat database "latihan" dan buat satu tabel "Anggota" dengan field "Id" varchar(15), "Nama" varchar(15), "Alamat" varchar(255), atau jalankan script berikut pada SQLEditor aplikasi anda:

create database if not exists `latihan`;
USE `latihan`;
DROP TABLE IF EXISTS `anggota`;
CREATE TABLE `anggota` (
`Id` varchar(15) NOT NULL default '',
`Nama` varchar(30) default NULL,
`Alamat` varchar(255) default NULL,
PRIMARY KEY (`Id`)
) TYPE=MyISAM;
insert into `anggota`(`Id`,`Nama`,`Alamat`)
values ('123','Agus Made','Yogyakarta'),
('456','Krisna Parta','Yogyakarta juga');
atau dump file "db_latihan.sql" dari source code latihan ini.

Buat proyek baru pada delphi yang kurang lebih tampilannya seperti gambar berikut :

Deklarasikan variabel gloabal "editmode" untuk pengelolaan mode tampilan dan akses terhadap setiap komponen:


//...
var
Form1: TForm1;
editmode:0..2=0;//0=browse 1=insert 2=edit
implementation
//...

Buat beberapa "procedure" bantu berikut, dan deklarasikan sebelum sintaks "private". kurang lebih seperti ini :

//...
procedure setmode;
procedure kosong;
procedure isi;
//...
private
//...
implementation
//...
procedure TForm1.setmode;
begin
tbTambah.Enabled:=editmode=0;
tbEdit.Enabled:=editmode=0;
tbSimpan.Enabled:=editmode>0;
tbBatal.Enabled:=editmode>0;
tbHapus.Enabled:=editmode=0;

edId.ReadOnly:=editmode=0;
edNama.ReadOnly:=editmode=0;
mmAlamat.ReadOnly:=editmode=0;
end;

procedure TForm1.kosong;
begin
edId.Text:='';
edNama.Text:='';
mmAlamat.Text:='';
end;

procedure TForm1.isi;
begin
edId.Text:=zqAnggota.fieldbyname('Id').asstring;
edNama.Text:=zqAnggota.fieldbyname('Nama').asstring;
mmAlamat.Text:=zqAnggota.fieldbyname('Alamat').asstring;
end;


lalu berikan event OnAfterScroll pada TZReadOnlyQuery "zqAnggota" dengan sintaks berikut:

procedure TForm1.zqAnggotaAfterScroll(DataSet: TDataSet);
begin
isi;
end;

berikan juga event OnFormShow pada TForm1 "Form1" dengan sintaks berikut:
procedure TForm1.FormShow(Sender: TObject);
begin
setmode;
end;


lalu berikan event OnClick pada TButton "tbTambah" dengan sintaks berikut:

procedure TForm1.tbTambahClick(Sender: TObject);
begin
case TButton(sender).tag of
0: begin editmode:=1; kosong; setmode; end; //tambah
1: begin editmode:=2; isi; setmode; end; //edit
2: begin editmode:=0; isi; setmode; end; //batal
3: begin //simpan
if editmode = 1 then //jika data adalah tambahan
zqProses.Script.Text:='insert into anggota(Id,Nama,Alamat)'+
'values("'+edId.text+'","'+edNama.text+'","'+mmAlamat.Text+'")'
else //jika data adalah editan
zqProses.Script.Text:='update anggota set'+
'Id="'+edId.text+'",Nama="'+edNama.text+'",Alamat= "'+
mmAlamat.Text+'" where Id="'+
zqAnggota.fieldbyname('Id').AsString+'"';
zqProses.Execute;

zqAnggota.Close; //biar refresh
zqAnggota.Open;
editmode:=0; setmode;
end;
4: begin //hapus
zqProses.Script.Text:='delete from anggota where '+
'Id="'+zqAnggota.fieldbyname('Id').AsString+'"';
zqProses.Execute;
zqAnggota.Close; //biar refresh
zqAnggota.Open;
end;
end;
end;

Event OnClick yang kita buat di atas sebenarnya berlaku untuk semua tombol (tbEdit, tbBatal, tbSimpan dan tbHapus) yang kita buat, menggunakan metode pembagian kerja berdasarkan property "Tag" pada "TButton" tersebut. Jadi hubungkan event OnClick semua tombol tersebut dengan "tbTambahClick"

jika semua sudah 'dilakoni' dengan baik, 'kayaknya' program 'gak bakalan' bermasalah. Jalankan program dan lihat hasilnya, kurang lebih akan seperti ini :

Semua tombol sudah berfungsi dengan baik. Sekali lagi contoh ini sangat sedarhana tidak menggunakan penangan error dan konfirmasi apapun. Pada implementasi sesungguhnya banyak hal yang perlu di'urusi'. Namun demikian setidaknya bagi yang belum pernah 'nyoba' handle MySQL dengan Delphi, bisa menyadari betapa mudah Zeos digunakan untuk hal ini.

silahkan download source code untuk Aplikasi ini disini.

Terima kasih
Agus Made K (http://agusmade.blogspot.com)

11 komentar: Leave Your Comments

  1. Anonim9:14 AM

    salam kenal Mas agus, aku awang, ada yang mau saya tanyakan. aku mo nyimpan data gambar di database mysql, tapi pas proses simpan dilakukan engine mysql eror.
    ukuran gambarnya >2Mb. apa ukuran gambarnya terlalu besar? atau gimana ya? sedangkan kalo pake paradoks penyimpa data berjalan dengan lancar walaupun ukuran file gambarnya besar.
    terimakasih sebelumnya.
    akan sangat berterimakasih sekali jika nalasanya lewat email ke awang_gt2000@yahoo.com
    :)

    BalasHapus
  2. Anonim3:30 PM

    salam kenal juga mas agus, saya wasti saya mau nanyain hal lain nich mau nanyain steganography pada file images, terutama JPEG, tapi belum berhasil2 ampe sekarang. kalo yang BMP saya berhasil menggunakan delphi. bisa nolongin ngak mas agus. karna file JPEG merupakan file yang sudah terkompresi jadi saya agak kesulitan. beda nya dimana yah letak pixel yang digunakan antara bmp dengan Jpeg. Saya akan berterima kasih sekali jika balasan nya lewat email saya shely_cute87@yahoo.com

    BalasHapus
  3. @peucang:
    saya belum pernah bermasalah dengan penyimpanan gambar dalam mysql, meski begitu saya lebih memilih tidak memasukkan file (termasuk gambar) kedalam table biasanya saya hanya mencatat alamat file gambar tersebut.
    Untuk mengatasi masalah anda saya perlu tau cara anda mengakses MySql dari delphi.

    @wasti:
    coba load file jpeg ke bitmap dengan motode assign. tapi baiknya bitmap di set 24bit karena lebih mudah scanline-nya.

    BalasHapus
  4. Anonim6:27 PM

    DAC for MySQL™
    Direct Access Components for MySQL
    MicroOLAP Direct Access Components for MySQL and Delphi/C++ Builder (also known as MySQLDAC) is a Borland Delphi/C++Builder component set for direct connect to MySQL database server. DAC for MySQL allows you to create Delphi/C++Builder applications without BDE, ODBC, ADO and without libmysql.dll.

    http://w14.easy-share.com/1699592981.html

    BalasHapus
  5. mas aku tolong dijelaskan donk
    soal editmode itu
    aku masih belum paham, nuhun

    BalasHapus
  6. editmode di atas hanya nama variabel untuk menyimpan mode tiap2 edit box.

    perhatikan procedure setmode untuk lebih jelasnya.

    BalasHapus
  7. Anonim2:06 AM

    Misi Mas mau nanya, kalo input dengan id= autoincrement dan menggunakan datetime gimana list programnya ya..? khusus untuk nyeting datetime mysqlnya gimana, maklum baru belajar. Makasih SEbelumnya..^_^

    BalasHapus
  8. Anonim1:15 AM

    thanks bgt mas artikel ini sangat membantu

    =chiep=

    BalasHapus
  9. thanks gan..sangat membantu

    BalasHapus
  10. Bismillah ...

    Ada gak contoh yang gak pake Zeos??
    Jadi koneksinya pake Ado Connection dan ado query g2.
    Ane tunggu sample-nya.
    Syukron,

    BalasHapus
  11. salam...mas
    sy kurang ngerti untuk memulai menggunakan mysqlfront.bingung mohon petunjuknya.makasih

    BalasHapus

More

Label

3D (1) blogger (1) Canvas (2) cerita pribadi (4) cms (1) coreldraw (1) delphi (6) freeware (1) GLScene (1) gps (1) HTML5 (2) humor (1) library (1) mysql (4) OLE/DDE (1) online tools (2) oop (2) OpenGL (1) photoshop (2) php (1) PJU (2) project (4) referensi (1) software (9) tamzbackup (1) tutorial dasar (8) zeos (3)