Backup Database Server dengan Delphi

Sekarang ini banyak aplikasi yang menggunakan database server. Yang menggunakan database server pada umumnya adalah aplikasi web based dan aplikasi client server. Pada suatu saat kita pasti ingin membuat fasilitas backup buat user melalui aplikasi yang kita buat.

Jadi user tidak perlu membuka database langsung tapi cukup lewat aplikasi yang kita buat saja untuk urusan backup membackup.

Atau mungkin kita membuat aplikasi yang tidak online dimana aplikasi tersebut dipakai dibanyak cabang, tapi antar cabang tidak ada jaringan dan dari cabang ke pusatpun tidak ada jaringan secara online yang menghubungkan. Kemudian databasenya setiap periode tertentu ingin digabungkan ke kantor pusat, dengan cara database dicabang di dump dulu baru dikirim ke pusat. Baru dipusat direstore.

Source code dibawah ini merupakan contoh backup dan restore yang dapat membantu Anda untuk mengatasi permasalahan / kasus-kasus tersebut diatas. Tinggal dikembangkan sendiri :

1. Buat Form diberi nama : frmMaintenance
2. Letakan komponen sebagai berikut :

ADOConnection nama :ADOConnection1
ADOQuery diberi nama Table1
ListBox diberi nama ListBox1
button diberi nama button7
SaveDialog diberi nama SaveDialog1
ADOQuery diberi nama ADOQuery1
CheckBox di beri nama CheckBox1
CheckBox di beri nama CheckBox2

Berikut penggalan source codenya :


var
frmMaintenance: TfrmMaintenance;
FileT : text; // File untuk nyimpen hasil backup
implementation

{$R *.dfm}

procedure TfrmMaintenance.GoBackup; // Procedure jalankan backup
var NameFile,waktu,host : string;
i,j,k : longint;
NameTable : string;
Data : string;
begin

if not SaveDialog1.Execute then
exit;

NameFile := SaveDialog1.FileName ;
waktu := FormatDateTime('dddd,dd mmmm yyyy -- hh:mm:ss',now);
host := 'localhost';
//frmSetting.Edit1.Text;
AssignFile(FileT,NameFile);
Rewrite(FileT);
writeln(FileT,'-- MySQL DUMP');
writeln(FileT,'-- Generate With MyDUMP');
writeln(FileT,'-- Generate at '+waktu+'');
writeln(FileT,'-- --------------------------------------------');

//CloseFile(FileT);

for i := 1 to ADOQuery1.RecordCount do
begin

table1.SQL.Clear;
table1.SQL.Add('SHOW CREATE TABLE '+Listbox1.Items.Strings[i-1]+'');
table1.Open ;

NameTable :=Listbox1.Items.Strings[i-1];

Append(FileT);
Writeln(FileT,'--');
Writeln(FileT,'-- Nama Tabel :'+ NameTable +'');
Writeln(FileT,'--');
Writeln(FileT,'');

if CheckBox1.Checked then
writeln(FileT,'DROP TABLE IF EXISTS ' + NameTable + ';');


Writeln(FileT,''+table1.fields[1].asstring+ ';');


if Checkbox2.Checked then
begin

// data transfer
table1.SQL.Clear;
table1.SQL.Add('SELECT * FROM '+Listbox1.Items.Strings[i-1]+'');
table1.Open ;
table1.First ;
for j := 1 to table1.RecordCount do
begin
Append(FileT);
write(FileT,'INSERT INTO ' + NameTable + ' VALUES( ');
for k := 1 to table1.FieldCount do
begin

Data := table1.FieldByName(table1.Fields[k-1].FieldName).AsString;
write(FileT,' "' + Data + '" ');
if k < table1.FieldCount then write(FileT,',');

end;

writeln(FileT,');');
table1.Next ;
end;
end;
end;

CloseFile(FileT);
MessageDlg('Proses database dump selesai',mtInformation,[mbOK],0);

end;



procedure TfrmMaintenance.FormShow(Sender: TObject);
var i : integer;
begin
button7.Enabled := true;

// setelah koneksi, tampilkan nama table ke listbox
try
with ADOQuery1 do begin
ADOQuery1.Open;
ADOQuery1.First;
ListBox1.Items.Clear;
For i:= 1 to ADOQuery1.RecordCount do
begin
ListBox1.Items.Add(ADOQuery1.fields[0].asstring);
ADOQuery1.Next;
end;
end;

except on e:exception do begin
MessageDlg('Koneksi database error',mtError,[mbOK],0);
button7.Enabled := False;
end;
end;
end;

9 komentar:

Anonim mengatakan...

gan..." procedure TfrmMaintenance.GoBackup; // Procedure jalankan backup " ini penempatannya dimn ya gan???

Admin mengatakan...

Di baris terakhir saja sebelum
end;

Dan dibaris awal / atas juga dibuat deklarasinya

Games mengatakan...

gan"bgaimana membuat jika 1 no transaksi bisa memasukan lebih dari 1 barang?memakai table bayangan"temprori"??makasih

Games mengatakan...

gan"bgaimana membuat jika 1 no transaksi bisa memasukan lebih dari 1 barang?memakai table bayangan"temprori"??makasih

Admin mengatakan...

Biasanya pakai master Detail. Di Databasenya ada dua tabel, tabel transaksiheader dan transaksidetail. Jadi tabel yang pertama untuk menyimpan header spt no transaksi, tgltransaksi, customer dsb. Sedangkan table detail berisi notransaksi, kodebarang, jumlahbarang dsb

bryan mengatakan...

gan kalau database mysql gimana ya caranya ?

Admin mengatakan...

Contoh diatas memang menggunakan database mysql

Unknown mengatakan...

mas ini kita buat Table dulu ya di database? kalau boleh tau table apa dan field apa saja ya?

Admin mengatakan...

Mas Gilang : gampangnya Mas Gilang gunakan database yang sudah ada saja, sehingga Delphi dikoneksikan dengan database yang sudah ada, fungsi program ini adalah untuk melakukan backup terhadap database yang sudah ada

Baca Juga