KONEKSI DELPHI & MYSQL
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
Atur property LoginPrompt menjadi False, lewat Object Inspector
·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
Koneksi ini bertipe MySQL dan kita beri nama DBMyData
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!
·Klik OK untuk menutup dialog Connection Editor
·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.
·Sekarang ubah properti Dataset dari DataSetProvider1 menjadi SQLTable1.
Ubah juga properti ProviderName dari ClientDataSet1 menjadi DataSetProvider1.
Terakhir, ubah properti DataSet dari DataSource1 menjadi ClientDataset1.
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); |
3 | <span> </span>ClientDataset1 . First; |
Untuk Button Sebelumnya
1 | procedure TForm1 . Button2Click(Sender: TObject); |
3 | if not ClientDataset1 . Bof then |
Untuk Button Setelahnya
1 | procedure TForm1 . Button3Click(Sender: TObject); |
3 | if not ClientDataset1 . Eof do then |
Untuk Button Terakhir
1 | procedure TForm1 . Button4Click(Sender: TObject); |
Untuk Button Refresh
1 | procedure TForm1 . Button5Click(Sender: TObject); |
3 | if ClientDataset1 . ChangeCount> 0 then |
4 | ClientDataset1 . ApplyUpdates(- 1 ); |
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
Berikut kode lengkap aplikasi yang baru kita buat di atas.
04 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, |
05 | Dialogs, DBXpress, FMTBcd, StdCtrls, Grids, DBGrids, DB, Provider, |
09 | SQLConnection1: TSQLConnection; |
11 | ClientDataSet1: TClientDataSet; |
12 | DataSetProvider1: TDataSetProvider; |
13 | DataSource1: TDataSource; |
25 | procedure Button1Click(Sender: TObject); |
26 | procedure Button2Click(Sender: TObject); |
27 | procedure Button3Click(Sender: TObject); |
28 | procedure Button4Click(Sender: TObject); |
29 | procedure Button5Click(Sender: TObject); |
30 | procedure Button6Click(Sender: TObject); |
31 | procedure Button7Click(Sender: TObject); |
32 | procedure Button8Click(Sender: TObject); |
33 | procedure Button9Click(Sender: TObject); |
34 | procedure Button10Click(Sender: TObject); |
44 | procedure TForm1 . Button1Click(Sender: TObject); |
48 | procedure TForm1 . Button2Click(Sender: TObject); |
50 | if not ClientDataset1 . Bof then |
53 | procedure TForm1 . Button3Click(Sender: TObject); |
55 | if not ClientDataset1 . Eof then |
58 | procedure TForm1 . Button4Click(Sender: TObject); |
62 | procedure TForm1 . Button5Click(Sender: TObject); |
64 | if ClientDataset1 . ChangeCount> 0 then |
65 | ClientDataset1 . ApplyUpdates(- 1 ); |
66 | ClientDataset1 . Refresh; |
68 | procedure TForm1 . Button6Click(Sender: TObject); |
70 | ClientDataset1 . Delete; |
72 | procedure TForm1 . Button7Click(Sender: TObject); |
74 | ClientDataset1 . Append; |
76 | procedure TForm1 . Button8Click(Sender: TObject); |
80 | procedure TForm1 . Button9Click(Sender: TObject); |
82 | ClientDataset1 . Cancel; |
84 | procedure TForm1 . Button10Click(Sender: TObject); |
86 | if ClientDataset1 . ChangeCount> 0 then |
87 | ClientDataset1 . ApplyUpdates(- 1 ); |