header :
hmm...ini sebenernya dah pernah tak tanyain dalam thread tapi lom ada jawaban yang
memuaskan, aq coba ekplor terus dan akhirnya 3 bulan yang lalu bisa juga buatnya,
disini aq akan membagikan ilmu yang aq dapat yaitu cara untuk melakukan dumping
database mysql.
body :
setelah aq modifikasi dengan perubahan kode2 yang lebih sederhana semoga contoh
tool ini dapat dipelajari dengan mudah (kalo masih sulit maap ya :)) ini dia
screenshotnya :
http://www.geocities.com/einsthonk/tes.jpg
untuk artikel ini aq hanya memberikan contoh cara untuk dump mysql, untuk
restorenya...hmm...di artikel yang lain ya..:) (eksplor dulu sendiri), seperti
biasanya aq gak terima kritikan,saran apalagi bug dalam program ini karena program
ini hanyalah sekedar bagi-bagi ilmu doank dan kalo ada bug ya perbaiki sendiri ya
:) , berikut ini listing program selengkapnya dari ubackup.pas :
<code>
unit ubackup;
interface
uses
windows, messages, sysutils, variants, classes, graphics, controls, forms,
dialogs, extctrls, stdctrls, zsqlprocessor, db, zabstractrodataset,
zabstractdataset, zdataset, zconnection,clipbrd;
type
tfbackup = class(tform)
panel1: tpanel;
panel2: tpanel;
label1: tlabel;
label2: tlabel;
label3: tlabel;
edserver: tedit;
eduser: tedit;
edpass: tedit;
label4: tlabel;
cbdb: tcombobox;
panel3: tpanel;
panel4: tpanel;
dbcreate: tcheckbox;
tbcreate: tcheckbox;
datacreate: tcheckbox;
panel5: tpanel;
button1: tbutton;
dbkonek: tzconnection;
q1: tzquery;
procedure cbdbdropdown(sender: tobject);
procedure button1click(sender: tobject);
procedure tbcreateclick(sender: tobject);
private
procedure connectdb;
procedure scriptsql(_sql: string ; issearch: boolean);
//procedure per-module
function createdatabase(dbname: string): string;
function createtable(dbname: string) : tstringlist;
function createdata(tbname: string): string;
function cektanggal(s: string) : string;
{ private declarations }
public
{ public declarations }
end;
var
fbackup: tfbackup;
implementation
{$r *.dfm}
scriptsql('select version()',true);
//tulis komentar
with sqlcomment do
begin
add('#
-----------------------------------------------------------------------------');
add('# database backup 1.0');
add('# -----------------------------------------------------------------------'
+
'------');
add('# host : ' + edserver.text );
add('# user name : ' + eduser.text );
add('# database : ' + cbdb.text );
add('# versi server : ' + q1.fields[0].asstring);
add('# tanggal dumping : ' + formatdatetime('dddd, dd mmmm yyyy',now));
add('#
-----------------------------------------------------------------------------');
add('# created by tigor mangatur manurung...!!!!');
add('# file ini merupakan hasil generate backup dengan menggunakan');
add('# database backup 1.0');
add('# -----------------------------------------------------------------------'
+
'------');
end;
slsql.insert(0,sqlcomment.text);
dlg := tsavedialog.create(self);
try
dlg.filter := 'file sql | *.sql';
dlg.title := 'simpan di...';
if dlg.execute then
slsql.savetofile(dlg.filename + '.sql');
finally
dlg.free;
end;
dbkonek.disconnect;
finally
slsql.free;
sqlcomment.free;
end;
end;
procedure tfbackup.connectdb;
begin
with dbkonek do
begin
disconnect;
connect;
end;
end;
if q1.eof then
begin
result := #13 + '/* [ data kosong ] */';
exit;
end;
for i := 0 to q1.recordcount - 1 do
begin
for _i := 0 to q1.fields.count - 1 do
begin
svalue := svalue + h + cektanggal(q1.fields[_i].asstring) + h + ',';
end;
svalue := copy(svalue,1,length(svalue) - 1);
svalue := 'replace into ' + tbname + ' values(' + svalue + ');';
s := s + #13 + svalue;
svalue := '';
q1.next;
end;
s := #13 + #13 + '/* ==> data untuk tabel "' + tbname + '" */' + #13 + s;
result := s
end;
h := '`';
connectdb;
scriptsql('show create database ' + dbname,true);
sresult.add(stringreplace(q1.fields[1].asstring,'create database ','create ' +
'database if not exists ',trflag) + ';');
sresult.add('use `' + dbname + '`;');
result := sresult.text;
finally
sresult.free;
end;
end;
for i := 0 to q1.recordcount - 1 do
begin
_sql := 'show create table ' + tbname[i] ;
scriptsql(_sql,true);
while not(q1.eof) do
begin
slsql.add('/* |===================== [ dumping tabel ' + tbname[i] + ' ]
=====================| */');
slsql.add(stringreplace(q1.fields[1].asstring,'create table ','create
table if not exists ',trflag) + ';');
if datacreate.checked then
slsql.add(createdata(tbname[i]));
end;
end.
</code>