Sebelum membuat programnya, kita akan tinjau terlebi h dahulu sintak-sintak yang diperlukan untuk backup dan restore database mysql.
Backup Database
Untuk backup database, ada dua sintak pilihan yang digunakan:
- Jika database memakai password:
mysqldump -uUserName -pPassword DatabaseName > "PathFileName"
Sebagai contoh, jika anda mempunyai database bernama School dan mempunyai user: admin, password: 123, maka sintak backup dapat ditulis sebagai berikut:
mysqldump -uadmin -p123 School > "c:\BackupDatabase\School.sql" - Jika database tidak memakai password:
mysqldump -uUserName DatabaseName > "PathFileName"
Sebagai contoh, jika anda mempunyai database bernama School dan mempunyai user: admin, maka sintak backup dapat ditulis sebagai berikut:
mysqldump -uadmin School > "c:\BackupDatabase\School.sql"
- Jika database memakai password:
mysql -uUserName -pPassword DatabaseName < "PathFileName"
Sebagai contoh, jika anda mempunyai database bernama School dan mempunyai user: admin, password: 123, maka sintak backup dapat ditulis sebagai berikut:
mysql -uadmin -p123 School < "c:\BackupDatabase\School.sql" - Jika database tidak memakai password:
mysql -uUser DatabaseName < "PathFileName"
Sebagai contoh, jika anda mempunyai database bernama School dan mempunyai user: admin, maka sintak backup dapat ditulis sebagai berikut:
mysql -uadmin DatabaseName < "c:\BackupDatabase\School.sql"
Ada tiga prosedure yang akan dibuat untuk mengimplementasikan program backup, yaitu program utama, program CreateProcess, dan program pembuat file batch.
- Program pembuat file batch
Digunakan untuk membuat file batch yang berisi perintah backup/restore
procedure BuatBatch(NamaFile,PathFile,Isi: String);
var
OutputFile : TextFile;
begin
AssignFile (OutputFile, PathFile + NamaFile);
if FileExists(PathFile + NamaFile) then
//Kalau filenya sudah ada ditambahkan dibawahnya
Append(OutPutFile)
else
//Kalau filenya belum ada dibuat dulu filenya
Rewrite (OutputFile);
try
Writeln (OutputFile, Isi);
finally
CloseFile (OutputFile);
end;
end; - Program CreateProcess
Menjalankan file batch dan menunggunya sampai eksekusi selesai dijalankan, kemudian baru menjalankan program berikutnya.
function DoExecute(FileName: String; Visibility:Integer): CARDINAL;
var
AName : array[0..512] of char;
CurrentDir : array[0..512] of char;
WorkDir : String;
StartUpInfo : TStartupInfo;
ProcessInfo : TProcessInformation;
begin
StrPCopy(AName, FileName);
GetDir(0,WorkDir);
StrPCopy(CurrentDir, WorkDir);
FillChar(StartupInfo, SizeOf(StartupInfo),#0);
StartupInfo.cb := System.SizeOf(StartupInfo);
StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := Visibility;
if (not CreateProcess(nil,AName,nil,nil,false,CREATE_NEW_CONSOLE or
NORMAL_PRIORITY_CLASS,nil,CurrentDir,StartupInfo,ProcessInfo)) then
begin
Result := $FFFFFFFF;
MessageBox(
Application.Handle,
PCHAR('Kesalahan ExecuteAndWait ' + #13#10 +
SysErrorMessage(GetLastError)),'Kesalahan',0)
end else
begin
try
WaitforSingleObject(ProcessInfo.hProcess, INFINITE);
GetExitCodeProcess(ProcessInfo.hProcess,Result);
CloseHandle(ProcessInfo.hProcess);
CloseHandle(ProcessInfo.hThread);
except
On E:Exception do ShowMessage(E.Message);
end;
end;
end; - Program Utama
Program di bawah ini bisa diletakkan dimana saja. Sebagai contoh, anda bisa meletakkan di Button.
Program ExecBackupRestoreMySQL(Jenis,User,Pass: String);
var
Isi, Perintah : String;
begin
NamaFileBatch := 'school.bat';
PathFile := 'c:\Backup';
Tempat := PathFile + '\' + NamaFileBatch;
if trim(pass) = EmptyStr then
begin
//without password
if trim(jenis) = '>' then
isi := 'mysqldump -u' + user + ' ' + db + ' ' + jenis + ' "' + Tempat + '"'
else
isi := 'mysql -u' + user + ' ' + db + ' ' + jenis + ' "' + Tempat + '"'
end else
begin
//using password
if trim(jenis) = '>' then
Isi := 'mysqldump -u' + user + ' -p' + pass + ' ' + db + ' ' + jenis + ' "' + Tempat + '"'
else
Isi := 'mysql -u' + user + ' -p' + pass + ' ' + db + ' ' + jenis + ' "' + Tempat +'"'
end;
BuatBatch(NamaFileBatch, PathFile, Isi);
Perintah := PathFile + NamaFileBatch;
if Not DoExecute(Perintah,SW_HIDE) <> $FFFFFFFF then
begin
ShowMessage('Terjadi kesalahan proses');
end;
end;
ExecBackupRestoreMySQL('>','admin','123');
kita juga punya nih jurnal mengenai Database Mysql silahkan dikunjungi dan dibaca , berikut linknya
BalasHapushttp://repository.gunadarma.ac.id/bitstream/123456789/1054/1/50406179.pdf
mas komponen yang di gunakan apa aja di delphinya untuk backup dan restore database?salam
BalasHapusPenjelasan saya di artikel ini tidak memakai komponen sama sekali. Sepenuhnya lewat program
BalasHapusBagaimana kalau di lazarus ko error mas
BalasHapusSaya belum pernah memakai Lazarus. Saya bisa tahu pesan error-nya apa, mungkin nanti saya akan cari tahu penyelesaiannya
Hapus