Anda di halaman 1dari 8

CRUD MENGGUNAKAN STORE PROCEDURE

Untuk tutorial kali ini kita akan mencoba membuat program CRUD dengan menggunakan store
procedure. Stored Procedure adalah sebuah kelompok kode SQL yang di simpan di katalog database
dan dapat di panggil kemudian oleh program, trigger atau bahkan stored procedure. Sebuah Stored
Procedure yang memanggil diri nya sendiri di sebut rekursif stored procedure. Dalam pembuatan aplikasi
jika menggunakan store procedure tentunya dapat membuat aplikasi kita berbeda jika dibandingkan
dengan tanpa store procedure, berikut beberapa keuntungan penggunaan store procedure :

a. Meningkatkan performance aplikasi.


Sebuah Stored Procedure di simpan dan di compile di katalog database yang mana dapat di
eksekusi lebih cepat di bandingkan SQL yang tidak di compile dari kode aplikasi.
b. Mengurangi traffic antara aplikasi dan database server.
Aplikasi hanya mengirim nama stored procedure untuk mengeksekusi SQL.
c. Dapat di gunakan kembali dan transparent ke aplikasi yang ingin menggunakan nya.

Untuk teori ga usah terlalu banyak ya kita langsung ke prakteknya saja :D

1. Buatlah database dengan nama db_latihan (atau sesuai selera)


2. Buat tabel dengan nama tb_mhs

3. Buat store procedure untuk proses simpan melalui Programmability – Store Procedure – Klik
Kanan – New Store Procedure

Setelah klik new store procedure pertama akan muncul template dari store procedure,
templatenya dihapus semua saja bagi yang belum paham cara penggunaannya lalu masukkan
store procedure seperti berikut

Author : Rk Training Camp & Software Center Page 1


create procedure simpan
@nim varchar(10),
@nama varchar(50),
@jns_kel varchar(10),
@tempat_lahir varchar(30),
@tgl_lahir datetime,
@alamat varchar(100)
as
insert into tb_mhs(nim,nama,jns_kel,tempat_lahir,tgl_lahir,alamat)
values
(@nim,@nama,@jns_kel,@tempat_lahir,@tgl_lahir,@alamat)

Keterangan :
@nim sampai @alamat merupakan variabel yang akan digunakan sebagai parameter, bisa
diartikan itu sebagai edit saat di delphi (dalam pembuatan variabel sesuaikan dengan kebutuhan
di perintah query setelah perintah as (untuk kasus diatas query untuk simpan) dan saat
penggunaannya di Delphi sesuaikan urutannya.

Setelah selesai membuat store procedure simpan dengan cara klik Execute

Jika sudah tidak ada yang error cara melihat apakah store procedure sudah masuk ke database
tersebut dengan cara Refresh pada menu Store Procedure

Maka akan muncul Store Procedure simpan seperti berikut:

Selesai untuk Store Procedure simpan


Selanjutnya buatlah store procedure baru dengan cara buat lagi New Store Procedure atau bisa
juga digabung dengan store procedure jika sudah mengerti cara penggabungannya.

Author : Rk Training Camp & Software Center Page 2


Store Procedure Ubah :

create procedure ubah


@nim varchar(10),
@nama varchar(50),
@jns_kel varchar(10),
@tempat_lahir varchar(30),
@tgl_lahir datetime,
@alamat varchar(100)
as
update tb_mhs set
nama=@nama,
jns_kel=@jns_kel,
tempat_lahir=@tempat_lahir,
tgl_lahir=@tgl_lahir,
alamat=@alamat
where nim=@nim

Store Procedure Hapus

create procedure hapus


@nim varchar(10)
as
delete from tb_mhs
where nim=@nim

Jika semua sudah dibuat dan disimpan maka akan ada 3 Store Procedure

Author : Rk Training Camp & Software Center Page 3


4. Selanjutnya kita implementasikan Store Procedure yang sudah dibuat ke Delphi, rancanglah form
seperti berikut (atau sesuai kreasi masing-masing) :

Komponen yang digunakan :


- AdoConnection (koneksikan ke database yang sudah dibuat, jika lupa caranya buka kembali
tutorial program CRUD)
- AdoCommand
- Adoquery (2 buah)
- DataSource

Setting Properties :
Komponen Properties Setting
AdoConnection1 Name koneksi
Login Prompt False
Connected True
AdoQuery1 Name Qmhs
Connection koneksi
AdoQuery2 Name Qumum
Connection koneksi
DataSource1 Name DSmhs
DataSet Qmhs
DBGrid1 DataSource DSmhs

Author : Rk Training Camp & Software Center Page 4


5. Sintak Program
Event Onshow :

procedure TForm1.FormShow(Sender: TObject);


begin
Button1.Enabled:=true;
Button2.Enabled:=false;
Button3.Enabled:=false;
Edit1.Clear;
Edit2.Clear;
Edit3.Clear;
RadioButton1.Checked:=false;
RadioButton2.Checked:=false;
DateTimePicker1.Date:=now;
Memo1.Clear;
with Qmhs do
begin
close;
sql.Clear;
sql.Add('select * from tb_mhs');
open;
end;
end;

Tombol Simpan :

procedure TForm1. Button1Click(Sender: TObject);


var jns_kelamin:string;
begin
if (Edit1.Text='') or (Edit2.Text='') or
((RadioButton1.Checked=false) and (RadioButton2.Checked=false))
or (Edit3.Text='') or (Memo1.Text='')then
ShowMessage('Data Kurang Lengkap, Silahkan Dilengkapi!') else
begin
with Qmhs do
begin
sql.Clear;
SQL.Add('select * from tb_mhs where nim='+quotedstr(Edit1.text)+'');
open;
end;
if Qmhs.Recordset.RecordCount > 0 then
ShowMessage('Data sudah ada silahkan isi yang lain!!')
else
begin
if RadioButton1.Checked=true then
jns_kelamin:='Laki-Laki' else
if RadioButton2.Checked=true then
jns_kelamin:='Perempuan';
ADOCommand1.Connection:=koneksi;
try koneksi.BeginTrans;
with ADOCommand1 do

Author : Rk Training Camp & Software Center Page 5


ADOCommand1.CommandText:='simpan ' +QuotedStr(Edit1.Text)+','+
QuotedStr(Edit2.Text)+','+
QuotedStr(jns_kelamin)+','+QuotedStr(Edit3.Text)+','
+QuotedStr(FormatDateTime('mm/dd/yyyy',DateTimePicker1.Date))+','+
QuotedStr(Memo1.Text);
ADOCommand1.Execute;
Koneksi.CommitTrans;
except Koneksi.RollbackTrans
end;
FormShow(sender);
end;
end;
end;

Tombol Ubah :

procedure TForm1. Button2Click(Sender: TObject);


var jns_kelamin:string;
begin
if (Edit1.Text='') or (Edit2.Text='') or
((RadioButton1.Checked=false) and (RadioButton2.Checked=false))
or (Edit3.Text='') or (Memo1.Text='')then
ShowMessage('Data Kurang Lengkap, Silahkan Dilengkapi!') else
begin
if RadioButton1.Checked=true then
jns_kelamin:='Laki-Laki' else
if RadioButton2.Checked=true then
jns_kelamin:='Perempuan';
ADOCommand1.Connection:=koneksi;
try koneksi.BeginTrans;
with ADOCommand1 do
ADOCommand1.CommandText:='ubah '+QuotedStr(Edit1.Text)+','+ QuotedStr(Edit2.Text)+','+
QuotedStr(jns_kelamin)+','+QuotedStr(Edit3.Text)+','+
QuotedStr(FormatDateTime('mm/dd/yyyy',DateTimePicker1.Date))+','+
QuotedStr(Memo1.Text);
ADOCommand1.Execute;
Koneksi.CommitTrans;
except Koneksi.RollbackTrans
end;
FormShow(sender);
end;
end;

Tombol Hapus :

procedure TForm1.Button3Click(Sender: TObject);


begin
if (Edit1.Text='') or (Edit2.Text='') or
((RadioButton1.Checked=false) and (RadioButton2.Checked=false))
or (Edit3.Text='') or (Memo1.Text='')then
ShowMessage('Data Belum DIpilih!') else

Author : Rk Training Camp & Software Center Page 6


begin
ADOCommand1.Connection:=koneksi;
try koneksi.BeginTrans;
with ADOCommand1 do
ADOCommand1.CommandText:='hapus '+QuotedStr(Edit1.Text);
ADOCommand1.Execute;
Koneksi.CommitTrans;
except Koneksi.RollbackTrans
end;
FormShow(sender);
end;
end;

Event OnCellClick pada DBgrid :

procedure TForm1.DBGrid1CellClick(Column: TColumn);


var jns_kelamin:string;
begin
Button1.Enabled:=false;
Button2.Enabled:=true;
Button3.Enabled:=true;
with Qmhs do
begin
Edit1.Text:=FieldValues['nim'];
Edit2.Text:=FieldValues['nama'];
jns_kelamin:=FieldValues['jns_kel'];
if jns_kelamin='Laki-Laki' then
RadioButton1.Checked:=true else
RadioButton2.Checked:=true;
Edit3.Text:=FieldValues['tempat_lahir'];
DateTimePicker1.Date:=FieldValues['tgl_lahir'];
Memo1.Text:=FieldValues['alamat'];
end;
end;

Tombol Refresh :

procedure TForm1.Button4Click(Sender: TObject);


begin
FormShow(sender);
end;

Tombol Keluar :

procedure TForm1.Button5Click(Sender: TObject);


begin
close;
end;

6. Jalankan program dan tes apakah masih ada yang error,jika masih ada silahkan tanyakan.

Author : Rk Training Camp & Software Center Page 7


7. Untuk penggunaan Store Procedure yang lain silahkan kalian kembangkan sendiri, misalnya
untuk insert ke 2 tabel.

Author : Rk Training Camp & Software Center Page 8

Anda mungkin juga menyukai