Contoh Penggunaan Thread dalam Aplikasi Database

Menjalankan Command di Delphi tanpa mempengaruhi kinerja user client.

Pada awal-awal pemrograman, saya sering menggunakan TTable untuk komponon Dataset pada aplikasi yang saya buat.Untuk data yang masih relatif kecil memang tidak terasa berat kinerja Aplikasinya, tetapi lama kelamaan mulai terasa berat dan mengkhawatirkan kinerjanya. Akhirnya saya punya inisiatif utk memakai komponen TClientDataset untuk mengganti TTable. Hasilnya lumayan lebih baik dari sebelumnya.

Tapi muncul persolaan lain yang tidak kalah memusingkan (kalau belum tahu solusinya). Yaitu pada penyimpanan transaksi yang seolah-olah aplikasi berhenti/hang, meskipun sudah memakai script SQL dan memakai koneksi berbeda tapi tetap saja terasa meski hanya beberapa detik saja. Hal ini tentu saja akan merepotkan user jika transaksi yang harus dimasukkan terbilang banyak dan terdiri dari banyak intruksi.

Akhirnya saya coba memakai Thread untuk mengatasi hal ini.

Pada aplikasi ini saya gunakan Delphi 7 dengan database SQL Server 2000/2005.

Komponen Utama ADOConnection

pendefinisian ADOConnection1 saya anggap semua sudah pada tahu. Hehe..

Kode nya adalah sebagai berikut.

  1. Bagian Deklarasi Object Thread

public

end;

ThreadEksekusi = class(TThread) //thread utk background command

public

TempCommand: TADOCommand;

protected

procedure Execute; override;

public

constructor EksekusiCommand(Temp: TADOCommand);

end;

var

fmain: Tfmain;

implementation

  1. Setelah menulis deklarasi objek diatas, tekan Shift+Ctrl+C supaya delphi secara otomatis membuat header procedure dan constructor.

  2. Kemudian isi kode program berikut dalam procedure Execute dan constructor EksekusiCommand.

{ ThreadEksekusi }

constructor ThreadEksekusi.EksekusiCommand(Temp: TADOCommand);

begin

TempCommand := TADOCommand.Create(nil);

FreeOnTerminate := True;

TempCommand.Assign(Temp);

inherited Create(False);

end;

procedure ThreadEksekusi.Execute;

begin

TempCommand.Execute;

inherited;

end;

Setelah kita mempunyai Objek Thread, maka objek Thread tersebut selanjutnya bisa kita gunakan untuk menjalankan Command SQL sesuai dengan kebutuhan kita. Dibawah ini saya berikan potongan program sebagai contoh penggunaannya. Misalnya kita buat procedure SimpanDataSales untuk menyimpan data penjualan. Disini saya menggunakan command untuk mengeksekusi stored procedure yang sudah ada di SQL Server yaitu SalesInvoicePost dengan parameter NoFaktur(int) No Faktur Penjualan

procedure Tfmain.SimpanDataSales;

begin

if ADOConnection1.Connected then

begin

command := TADOCommand.Create(Self);

command.Connection := ADOConnection1;

command.CommandType := cmdText;

command.CommandText := ‘ exec SalesInvoicePost ‘ + IntToStr(NoFaktur);

try

ThreadEksekusi.EksekusiCommand(command);

except

end;

end;

end;

Dengan Thread ini kita bisa mengeksekusi Command secara background dan tidak mempengaruhi kinerja user di sisi client.

Mohon Maaf dan dibenarkan jika ada kekeliruan. Semoga Bermanfaat…

Salam Delphi…

By Ayfaa

online mba programs

Tinggalkan komentar