26 March 2008
Tulisan ini telah dipindahkan ke website baru kami, Tutorial Koneksi Database Menggunakan
Delphi & MySQL. Komentar dan pertanyaan di blog ini tidak akan kami jawab lagi. Silahkan
sampaikan komentar atau pertanyaan Anda pada link tulisan di atas.
Sedangkan untuk Delphi, MySQL dan Zeos, silahkan lihat Tutorial Koneksi Database Dengan
INSTALASI MYSQL
MySQL Server dapat didownload di http://dev.mysql.com/. Petunjuk instalasi dapat Anda lihat pada
dokumentasi yang disertakan dengan file arsip (*.zip) MySQL yang Anda download. Namun jika Anda
tidak mau repot, berikut saya coba menunjukkan langkah-langkah instalasi MySQL Server sebagai
service di Windows XP (SP2), dengan catatan, tidak ada modifikasi konfigurasi kecuali path-path MySQL.
Untuk menginstall MySQl Server, ekstraklah file zip hasil download ke drive C:\ sehingga folder utama
menjadi C:\MySQL-x.xx.
Kemudian masuklah ke C:\MySQL-x.xx\, cari file-file dengan ekstensi *.cnf dan hapus. Hapus juga file
My.cnf di drive C:\ jika ada. Hapus juga file my.ini di folder C:\Windows jika ada. Langkah ini untuk
membuang kemungkinan konflik nantinya.
Sekarang jalankan command prompt dari menu Start>Run, ketik CMD dan enter.
Ketik C:\ dan enter.
Ketik cd C:\MySQL-x.xx\Bin dan enter.
Ketik mysqld-nt install dan enter, untuk menginstall MySQL sebagai service.
Ketik SC start mysql untuk menjalankan MySQL Service.
Jika semuanya berjalan lancar, kini MySQL Server telah terinstall di komputer Anda.
Untuk menguji MySQL Server, kita akan mencoba membuat sebuah database dan sebuah tabel.
OK, sekarang Anda bisa keluar dari konsole ini dengan mengetik
mysql> exit <enter>
Bye
Di Delphi, telah disediakan berbagai cara untuk berkomunikasi dengan MySQL Server, ada ADO/dbGo
dengan perantaraan MyODBC driver, ada juga BDE dengan memanfaatkan ODBC, ada pula dbExpress
yang melakukan koneksi langsung ke Server dengan perantaraan library MySQL. Sampai nanti, yang
akan kita bahas adalah dbExpress ini, sebab dbExpress adalah teknologi koneksi database asli dari
Borland, dan sudah mendukung MySQL sejak Delphi 6. Meskipun demikian tidak tertutup kemungkinan
bagi Anda untuk menggunakan komponen koneksi pihak ketiga dalam aplikasi Delphi Anda, seperti
MyDac dan sebagainya. Jika Anda nantinya tertarik, http://www.torry.net menyediakan beragam library
antarmuka Delphi MySQL untuk Anda download.
OK, kini kita buat sebuah aplikasi baru di Delphi. Harap diingat, meski Delphi 6 sudah mendukung
MySQL, namun yang saya gunakan dalam menulis posting ini adalah Delphi 2006. Kita lanjutkan dengan
langkah-langkah berikut:
Tambahkan sebuah TSQLConnection dari palette dbExpress ke form
Klik kanan pada SQLConnection1 pada form dan pilih Edit Connection Properties
Sebuah dialog Connection Editor akan ditampilkan
Kita buat koneksi dengan mengklik tombol Add Conection
Klik OK.
Kini kita atur property koneksi DBMyData ini seperti terlihat pada gambar berikut
Anda bias mencoba koneksi ini dengan mengklik tanda centang di bagian atas dialog. Jika pesan yang
muncul menunjukkan koneksi sukses, selamat, Anda siap berksperimen dengan Delphi &
MySQL!
Kembali ke form, ubah properti SQLConnection1 menjadi True, sehingga koneksi ke MySQL menjadi
aktif.
Tambahkan sebuah TSQLTable dari palette dbExpress, sebuah TDataSource, TDataSetProvider dan
TClientDataSet dari palette Data Access ke form
Atur properti SQLConnection milik SQLTable1 menjadi SQLConnection1 dan properti TableName
menjadi teman, seperti yang telah kita buat pada langkah di atas.
Dari langkah-langkah ini, kita bias melihat alur data dari server MySQL hingga ke GUI aplikasi
kita dan juga sebaliknya, pada diagram berikut:
Sebenarnya, akses data dalam table MySQL dapat langsung dilakukan antara DataSource1 dan
SQLTable1, tapi karena SQLTable adalah dataset unidirectional (satu arah), penggunaan data control
yang multidirectional menjadi tidak berfungsi dengan baik. Contoh, DBGrid, DBNavigator.
Pergerakan kursor penunjuk record pun hanya dapat bergerak dengan arah Next() dan First. Last() dan
Next() tidak didukung.
Dataset unidirectional sangat menguntungkan saat koneksi ke SQL Server (pada umunya)
mengembalikan sejumlah besar data, karena menghemat memori dan trafik network.
Delphi menyediakan cara mengatasi hal ini dengan menambahkan DataSetProvider dan ClientDataset di
antara kedua komponen database di atas. Dataset provider berfungsi mengontrol data dari SQLTable,
dan menyimpannya sementara secara lokal, dan kemudian direpresentasikan kembali dalam bentuk
dataset oleh ClientDataset.
OK. Kini kita tambahkan sebuah DBGrid [palette Data Controls] dan beberapa buah Button hingga
tampilan form menjadi seperti ini:
Sekarang kodenya. Klik ganda Button1, yang memiliki caption Pertama. Ketikkan kode untuk navigasi
ke data pertama
1 procedure TForm1.Button1Click(Sender: TObject);
2 begin
3 <span> </span>ClientDataset1.First;
end;
4
Untuk Button-Button lainnya dapat Anda lihat kodenya langsung pada demo program yang
tersedia untuk Anda download di akhir tulisan ini.
OK. Sekarang menampilkan data dari ClientDataset ke DBGrid. Seperti biasa, Anda cukup mengatur
properti DataSource dari DBGrid1 menjadi DataSource1. Kini atur properti Active pada
ClientDataset1 dan SQLTable1 menjadi True. Ubah juga properti Connection dari
SQLConnection1 menjadi True.
Jalankan program Anda.
KODE SELENGKAPNYA
1 unit umain;
2 interface
uses
3 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
4 Dialogs, DBXpress, FMTBcd, StdCtrls, Grids, DBGrids, DB, Provider,
5 DBClient, SqlExpr;
type
6
TForm1 = class(TForm)
7 SQLConnection1: TSQLConnection;
8 SQLTable1: TSQLTable;
9 ClientDataSet1: TClientDataSet;
1 DataSetProvider1: TDataSetProvider;
DataSource1: TDataSource;
0 DBGrid1: TDBGrid;
11 Button1: TButton;
1 Button2: TButton;
2 Button3: TButton;
1 Button4: TButton;
Button5: TButton;
3 Button6: TButton;
1 Button7: TButton;
4 Button8: TButton;
1 Button9: TButton;
Button10: TButton;
5 procedure Button1Click(Sender: TObject);
1 procedure Button2Click(Sender: TObject);
6 procedure Button3Click(Sender: TObject);
1 procedure Button4Click(Sender: TObject);
7 procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
1 procedure Button7Click(Sender: TObject);
8 procedure Button8Click(Sender: TObject);
1 procedure Button9Click(Sender: TObject);
9 procedure Button10Click(Sender: TObject);
2 private
{ Private declarations }
0 public
2 { Public declarations }
1 end;
2 var
Form1: TForm1;
2 implementation
2 {$R *.dfm}
3 procedure TForm1.Button1Click(Sender: TObject);
2 begin
4 ClientDataset1.First;
end;
2 procedure TForm1.Button2Click(Sender: TObject);
5 begin
2 if not ClientDataset1.Bof then
6 ClientDataset1.Prior
end;
2
procedure TForm1.Button3Click(Sender: TObject);
7 begin
2 if not ClientDataset1.Eof then
8 ClientDataset1.Next;
2 end;
9 procedure TForm1.Button4Click(Sender: TObject);
begin
3 ClientDataSet1.Last;
0 end;
procedure TForm1.Button5Click(Sender: TObject);
3 begin
if ClientDataset1.ChangeCount>0 then
1
ClientDataset1.ApplyUpdates(-1);
3 ClientDataset1.Refresh;
2 end;
3 procedure TForm1.Button6Click(Sender: TObject);
3 begin
ClientDataset1.Delete;
3 end;
4 procedure TForm1.Button7Click(Sender: TObject);
3 begin
5 ClientDataset1.Append;
3 end;
procedure TForm1.Button8Click(Sender: TObject);
6 begin
3 ClientDataset1.Edit;
7 end;
3 procedure TForm1.Button9Click(Sender: TObject);
begin
8 ClientDataset1.Cancel;
3 end;
9 procedure TForm1.Button10Click(Sender: TObject);
4 begin
0 if ClientDataset1.ChangeCount>0 then
ClientDataset1.ApplyUpdates(-1);
4 end;
1 ed.
4
2
4
3
4
4
4
5
4
6
4
7
4
8
4
9
5
0
5
1
5
2
5
3
5
4
5
5
5
6
5
7
5
8
5
9
6
0
6
1
6
2
6
3
6
4
6
5
6
6
6
7
6
8
6
9
7
0
7
1
7
2
7
3
7
4
7
5
7
6
7
7
7
8
7
9
8
0
8
1
8
2
8
3
8
4
8
5
8
6
8
7
8
8
8
9
DOWNLOAD