Manajemen Transaksi pada Delphi 7 dengan MySQL
Di program ini untuk koneksi ke MySQL menggunakan komponen ZeosDBO, Anda bisa donwload dari http://sourceforge.net/projects/zeoslib/
ZeosDBO adalah komponen sebagai perantara koneksi (driver) untuk Borland Delphi, C++ Builder dan Kylix. Karena disajikan dalam kode program (source code), maka Anda harus mengkompilasi sendiri. Adapun Anda bisa kompilasi dengan baberapa bahasa pemrograman yang Anda sukai antara lain:
- Delphi 5 – 7 and 9
- Lazarus (FreePascal)
- C++ Builder 5 – 6
- Kylix 2 – 3
ZeosDBO bisa dikoneksikan ke beberapa database Server antara lain adalah :
- MySQL 3.20 – 5
- PostgreSQL 6.5 – 8.x
- Firebird 1.0 – 1.5
- Interbase 5.0 – 7.5
- Microsoft SQL Server 7, 2000
- Sybase ASE 12.0, 12.5
- Oracle 9i
- SQLite 2.8
Latihan
Buatlah Struktur Tabel berikut
CREATE TABLE mhs (
no_mhs char(4) DEFAULT NULL,
nama char(25) DEFAULT NULL,
alamat char(25) DEFAULT NULL
) ENGINE=InnoDB;CREATE TABLE `jurusan` (
`no_mhs` char(4) DEFAULT NULL,
`kode` char(2) DEFAULT NULL
) ENGINE=InnoDB;Rancangan Form seperti gambar berikut :
Setting Properti
Program di Tombol Simpan Klik
procedure TForm1.Button1Click(Sender: TObject);
begin
// query menjalankan transakasi //
ZQuery3.Close;
ZQuery3.SQL.Clear;
ZQuery3.SQL.Add(‘START TRANSACTION;’);
ZQuery3.ExecSQL;// menyimpan ke tabel mhs
ZQuery2.Close;
ZQuery2.SQL.Clear;
ZQuery2.SQL.Add(‘INSERT INTO mhs VALUES(:no,:nama,:alamat)’);
ZQuery2.ParamByName(‘no’).AsString :=Edit1.Text;
ZQuery2.ParamByName(‘nama’).AsString :=Edit2.Text;
ZQuery2.ParamByName(‘alamat’).AsString:=Edit3.Text;
try
ZQuery2.ExecSQL;
except
MessageDlg(‘Ada kesalahan Gagal Menyimpan di tabel MHS’, mtInformation, [mbOk],0);
// jika ada kesalahan penyimpan tabel mhs dibatalkan //
// keluar dari procedure //
ZQuery3.Close;
ZQuery3.SQL.Clear;
ZQuery3.SQL.Add(‘ROLLBACK;’);
ZQuery3.ExecSQL;
exit;
end;
//menyimpan di tabel jurusan//ZQuery2.Close;
ZQuery2.SQL.Clear;
ZQuery2.SQL.Add(‘INSERT INTO jurusan VALUES(:no,:kode)’);
ZQuery2.ParamByName(‘no’).AsString :=Edit1.Text;
ZQuery2.ParamByName(‘kode’).AsString :=Edit4.Text;
try
ZQuery2.ExecSQL;
except
MessageDlg(‘Ada kesalahan Gagal Menyimpan di tabel Jurusan’, mtInformation,[mbOk],0);
// jika ada kesalahan penyimpan semua dibatalkan //
// keluar dari procedure //ZQuery3.Close;
ZQuery3.SQL.Clear;
ZQuery3.SQL.Add(‘ROLLBACK;’);
ZQuery3.ExecSQL;
exit;
end;
MessageDlg(‘Data sudah disimpan ‘, mtInformation,
[mbOk],0);// ketikan menjalankan perinta try tidak ada kesalahan //
// menjalankan perintah COMMIT untuk menyimpan /
// secara permanen//ZQuery3.Close;
ZQuery3.SQL.Clear;
ZQuery3.SQL.Add(‘COMMIT;’);
ZQuery3.ExecSQL;// perbaharui tampilan tabel//
ZQuery1.Open;end;