Teman-teman Delphier kerap bertanya, “Bagaimana mengatur aplikasi Delphi-Zeos-MySQL agar dapat berjalan di pc lain tanpa perlu menginstall Delphi di sana?”
Di posting tentang koneksi Delphi-Zeos-MySQL, Anda dapat melihat file-file depencies (pendukung) aplikasi baik program Anda maupun MySQL.
Kini, giliran setting koneksi yang akan kita bahas. Mulai dari mengetes koneksi, menyimpannya ke file INI/CFG, sampai membacanya kembali.
MENGETES KONEKSI
Pertama, kita mengetes koneksi (Zeos) dengan cara seperti berikut:
if ZConnection1.Connected then ZConnection1.Disconnect; ZConnection1.HostName := 'localhost'; ZConnection1.User := 'root'; ZConnection1.Password := 'YOUR_PASSWORD'; ZConnection1.Port := 3306; ZConnection1.Database := 'simpeg'; try ZConnection1.Connect; ShowMessage('Terkoneksi.'); except ShowMessage('Gagal koneksi.'); end;
Bila parameter koneksi benar, kita akan mendapatkan pesan seperti berikut:
MENYIMPAN SETTING KONEKSI KE FILE
Nah, kini kita buat sebuah form baru dengan inputan parameter koneksi:
Di atas, Edit1 (Server Name/IP) telah memiliki nilai default localhost, Edit2 telah bernilai default port MySQL 3306, dan Edit3 (Username) bernilai default root.
Kini kita buat kode untuk menyimpan setting koneksi ke file konfigurasi. Nama file dan ekstensinya terserah Anda. Saya akan menggunakan nama file yang sama dengan nama projek (nama file EXE), menggunakan ekstensi .SAV, sehingga bila nama projek adalah Project1 maka nama file EXE adalah Project1.exe dan nama file konfigurasi koneksi bernama Project1.sav.
Saatnya koding 🙂
Format file yang akan kita pakai bukan file INI yang beformat:
[SETTINGS] server=localhost port=3306 ............. dst.
Melainkan file berformat flat, yaitu pasangan nama:nilai, dengan tanda titik ganda (:) sebagai pemisah.
#INI ADALAH KOMENTAR server=localhost port=3306 ............. dst. %INI KOMENTAR //INI JUGA KOMENTAR
Klik ganda tombol Save Setting, ketikkan kode seperti berikut:
procedure TForm1.Button2Click(Sender: TObject); var NamaFile: String; List: TStringList; begin //File berada dalam satu folder dengan aplikasi NamaFile := Application.ExeName; //ganti nama file dengan ekstensi .sav NamaFile := ChangeFileExt(NamaFile, '.sav'); //Buat List untuk menampung setting koneksi List := TStringList.Create; try //tentukan tanda ":" sebagai pemisah nama dan nilai List.NameValueSeparator := ':'; //tampung parameter List.Add('hostname:' + Edit1.Text); List.Add('port:' + Edit2.Text); List.Add('user:' + Edit3.Text); List.Add('password:' + Edit4.Text); List.Add('database:' + Edit5.Text); //Save ke file try List.SaveToFile(NamaFile); ShowMessage('Setting koneksi tersimpan ke file :'#13 + NamaFile); except ShowMessage('Gagal menyimpan seeting koneksi.'); end; finally //Jangan lupa membebaskan memory List.Free; end; end;
Kini yang jadi soal, bagaimana jika Edit2 (Port) tidak diisi dengan angka? Kita tambahkan kode untuk mencegahnya. Klik pada Edit2 (Port), dari Object Inspector klik tab Events dan klik ganda pada event OnKeyPress. Masukkan kode:
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char); begin if not (key in ['0'..'9',#8, Chr(VK_DELETE)]) then Key := #0; end;
Klik lagi pada Edit2 (Port) dan property Max Length disi dengan nilai 4, sehingga panjang nilai yang dapat diinput dibatasi sampai 4 digit angka. Ini berguna mencegah integer overflow jika nilai diisi terlalu besar.
Sampai di sini, silahkan jalankan program Anda dan coba Save Settingnya. Bila berhasil, pesan sukses seperti berikut akan ditampilkan dan sebuah file Project1.sav akan dibuat dalam folder yang sama dengan folder program.
MEMBACA KONEKSI TERSIMPAN
Saatnya kuis. Eh, saatnya membaca kembali setting koneksi tadi 🙂
Langsung saja, klik ganda tombol Load Setting dan masukkan kode:
procedure TForm1.Button3Click(Sender: TObject); var NamaFile: String; List: TStringList; begin //File berada dalam satu folder dengan aplikasi NamaFile := Application.ExeName; //ganti nama file dengan ekstensi .sav NamaFile := ChangeFileExt(NamaFile, '.sav'); //Buat List untuk menampung setting koneksi List := TStringList.Create; try //tentukan tanda ":" sebagai pemisah nama dan nilai List.NameValueSeparator := ':'; //Load setting dari ke file try List.LoadFromFile(NamaFile); //tampung parameter Edit1.Text := List.Values['hostname']; Edit2.Text := List.Values['port'] ; Edit3.Text := List.Values['user'] ; Edit4.Text := List.Values['password']; Edit5.Text := List.Values['database']; ShowMessage('Setting koneksi telah di-load dari file :'#13 + NamaFile); except ShowMessage('Gagal membaca setting koneksi.'); end; finally //Jangan lupa membebaskan memory List.Free; end;
Selanjutnya untuk tombol Login:
procedure TForm1.Button1Click(Sender: TObject); begin if ZConnection1.Connected then ZConnection1.Disconnect; ZConnection1.HostName := Edit1.text; ZConnection1.Port := StrToInt(Edit2.Text); ZConnection1.User := edit3.Text; ZConnection1.Password := Edit4.Text; ZConnection1.Database := Edit5.text; try ZConnection1.Connect; ShowMessage('Terkoneksi.'); except ShowMessage('Gagal koneksi.'); end; end;
Demikian tulisan sederhana ini, menjawab pertanyaan seorang pengunjung. Semoga sukses buat Anda Delphier Indonesia 🙂
Download
Bila Anda tertarik untuk mengunduh, semoga link berikut masih aktif. Luck for you 🙂
boss sy buat data di mysql server 5.5.8 under windows xp
path c:/program files/mysql/mysql server 5.5
karena sesuatu hal kompinya error tah kenapa. gak bisa booting.
lalu sy putuskan untuk reinstall windows dan mysqlnya. sebelumnya sy copy data lama sy di folder dataku yang berada pada c:/program files/mysql/mysql server 5.5/data/
semuanya ok.
kemudian sy paste ke c:/program files/mysql/mysql server 5.5/data installan baru.
tp tidak terbaca.
Bgmana agar data sy bisa terbaca kembali?
Apakah langkah copy paste data pd mysql yg sy lakukan tsb valid?
bgmn cara copy paste data mysql?
folder data bisa di-copy paste apabila MySQL Server running dengan engine lama, semisal MyISAM. Engine baru seperti InnoDB tidak disimpan dalam folder, melainkan dalam file tunggal, sehingga copy-paste tidak akan bekerja. Coba lihat dalam folder data, bila ada file bernama ibdata1, berarti MySQL berjalan dengan engine innoDB.
Bila Anda yakin MySQLnya pake MyISAM, coba cari file my.ini dalam folder utama MySQL, cari baris
basedir=”D:/mysql5122/”
datadir=”D:/mysql5122/Data/”
dan sesuaikan pathnya. Kemudian restart MySQL server (lewat Services).
thanks bnget infonya bro…
Thanks 🙂
ini nih yang paling aku cari..
makasih banyak untuk tutornya mas.. b @_@ d
gan, mau tanya kenapa saya isi property untuk connection di object inspector dengan FLogin.ZConnection1 gak bisa keluar message : invalid property value, ini untuk isi property dari TZquery pake komponen dari Zeos, thank a lot be4
Makasih banyak jeng ilmunya… manfaat banget…. 😀
mas tolong hidupin link downloadnya dunk…lagi butuh sekali…terima kasih
makasi banyak,, sangat membantu……
Terima Kasih Tutorialnya, sangat sangat membantu sekali 😀
gan minta request klu diperbolehin…..tolong buatin source coding ataupun demo di Delphi 7 ttg “cara mnampilkan memo.text yang diambil dari log text aplikasi lain (sya ambil dri aplikasi ” Proxifier Portable ” yang ada log textnya)…..kalau bsa dishare dimari atau kirim via inbox FB sya Budi Ono https://www.facebook.com/profile.php?id=100017129255382 sblumnya matur nuwun bgt klu mau direspon/ditanggapapi soale sya perlu bgt….wasalam
maaf soalnya sya sudah cari di google dan youtube tdiak ada gan ……
Di tempat kerja saya ada beberapa mesin yang akan di monitor dengan 1 pc melalui serial port,
Com1 untuk mesi A
Com2 untuk mesi B
Bagaimana codingnya agar saya bisa memilih mesin A atau mesin B? Dan bagaimana agar saya bisa merubah konfigurasi bila ada penambahan mesin,misalnya di com 3?