Data management

  

MEMBUAT APLIKASI DESKTOP DENGAN DATABASE ORACLE UNIKOM (2010) Jenis aplikasi 

  Ada 2 jenis aplikasi yang biasa dibuat, yaitu

   Aplikasi database berbasis desktop

  Dibangun dengan Delphi, Java, C++, Visual Basic, dll 

  Aplikasi database berbasis web Dibangun dengan PHP, JSP, ASP, dll Aplikasi Berbasis Desktop

  Aplikasi contoh akan dibangun menggunakan Delphi

  

  Buka Delphi

  UNIKOM (2010) Aplikasi Berbasis Desktop 

  Tempatkan komponen AdoConnection (ada di component palette ADO) pada Form. Aplikasi Berbasis Desktop 

  Klik AdoConnection, pilih properti ConnectionString dan klik tombol “…”. Aplikasi Berbasis Desktop 

  Klik tombol Build Aplikasi Berbasis Desktop 

  Pilih “Microsoft OLE DB Provider for Oracle”. Aplikasi Berbasis Desktop 

  Klik tombol “Next>>” Aplikasi Berbasis Desktop  Atur konfigurasi seperti pada gambar di bawah ini.

  IP Server:Port Listener/NamaDatabaseServer User Name dan Password Aplikasi Berbasis Desktop 

  Klik tombol “Test connection”

  

  Jika berhasil akan menampilkan layar seperti pada gambar di bawah ini.

   Jika tidak berhasil, atur kembali konfigurasinya.  Jika telah selesai klik OK sampai kembali ke form.

  Aplikasi Berbasis Desktop 

  Atur property Connected dari ADOConnection menjadi TRUE. Jika menanyakan username dan password silahkan diisi.

  UNIKOM (2010) Menampilkan Data 

  Tempatkan sebuah ADOQuery (ada di component palette ADO) pada form

  

  Klik ADOQuery1 untuk mengatur propertinya

  

  Ganti property Name menjadi QTabungan

  

  Isilah property Connection dengan ADOConnection1 Menampilkan Data 

  Isilah properti SQL dengan

  “SELECT * FROM TblTabungan”, kemudian klik OK Menampilkan Data 

  Aturlah property Active dari QTabungan menjadi TRUE. Menampilkan Data 

  Tempatkan sebuah DataSource (ada di component palette Data Access)

  

  Atur property Name menjadi DSTabungan

  

  Atur property Dataset. Isi dengan QTabungan, Menampilkan Data 

  

Tempatkan sebuah DBGrid (ada di component palette

Data Controls) 

  Atur property DataSource dengan DSTabungan Menampilkan Data 

  Lakukan hal yang sama untuk menampilkan tabel TblTransaksi. Atur properti sebagai berikut :

   Komponen AdoQuery

   CONNECTION : ADOConnection1

   NAME : QTransaksi

   SQL : SELECT * FROM TblTransaksi

   Active : TRUE

   Komponen DataSource

   NAME : DSTransaksi

   DATASET : QTransaksi Menampilkan Data

  Menampilkan Data 

  Membuat Tombol Refresh Data Tabungan

  

Tempatkan sebuah Tombol di atas dbgrid Tabungan

   procedure TForm1.Button2Click(Sender: TObject); Ganti Caption : Refresh var begin LastPos:string; QTabungan.Close; LastPos:=QTabungan.Bookmark; QTabungan.DisableControls; QTabungan.EnableControls; QTabungan.Bookmark:=LastPos; QTabungan.Open; end; Menampilkan Data 

  Membuat Tombol Refresh Data Transaksi

  

Tempatkan sebuah Tombol di atas dbgrid Transaksi

   procedure TForm1.Button5Click(Sender: TObject); Ganti Caption : Refresh var begin LastPos:string; QTransaksi.Close; LastPos:=QTransaksi.Bookmark; QTransaksi.DisableControls; QTransaksi.EnableControls; QTransaksi.Bookmark:=LastPos; QTransaksi.Open; end;

  UNIKOM (2010) Memanggil Stored Procedure 

  Tempatkan sebuah ADOStoredProc

  

  Isi property CONNECTION : ADOConnection1

  

  Ganti property NAME : TambahTabungan

  

  Isi property PROCEDURENAME : TambahTabungan sesuaikan dengan nama procedure yang telah dibuat di oracle. Memanggil Stored Procedure 

  Untuk melihat parameter yang dibutuhkan, klik property Parameters.

  

  a Memanggil Stored Procedure 

  Buatlah tempat untuk pengisian data tabungan baru, misalnya :

   Tempatkan sebuah GroupBox, ganti Caption : Tambah Tabungan

   Tempatkan 3 Label dan 3 TextBox dan 1 Button

   TextBox1 diberi nama ENama

   TextBox2 diberi nama EKota

   TextBox3 diberi nama ESaldo

   Untuk label sesuaikan captionnya

   Untuk Button, isi caption dengan “Save”. Memanggil Stored Procedure 

  Isilah event OnClick pada Button1 dengan begin procedure TForm1.Button1Click(Sender: TObject); With TambahTabungan.Parameters do begin ParamByName('pKota').Value:=EKota.Text; ParamByName('pNama').Value:=ENama.Text; TambahTabungan.ExecProc; end;

ParamByName('pSaldo').Value:=ESaldo.Text;

end; ShowMessage('Penambahan Selesai');

  Memanggil Stored Procedure 

  Ulangi langkah-langkah memanggil stored procedure untuk procedure Transaksi_Cash dan Transaksi_Transfer Memanggil Stored Procedure 

  Isilah event OnClick pada Button Transaksi Cash begin procedure TForm1.Button3Click(Sender: TObject); With TransaksiCash.Parameters do begin ParamByName('pBesar').Value:=ECashBesar.Text; ParamByName('pNoRek').Value:=ECashNoRek.Text; ShowMessage('Transaksi Cash Selesai'); TransaksiCash.ExecProc; end; end;

  Memanggil Stored Procedure 

  Isilah event OnClick pada Button Transaksi Transfer begin procedure TForm1.Button4Click(Sender: TObject); With TransaksiTransfer.Parameters do begin ParamByName('pNoRek2').Value:=ETransferNoRek2.Text; ParamByName('pNoRek1').Value:=ETransferNoRek1.Text; TransaksiTransfer.ExecProc; end; ParamByName('pBesar').Value:=ETransferBesar.Text; end; ShowMessage('Transaksi Transfer Selesai');

  

MEMBUAT APLIKASI WEB DENGAN DATABASE ORACLE UNIKOM (2010) Aplikasi berbasis web

  Dalam perkuliahan ini akan dicontohkan pembuatan aplikasi berbasis web menggunakan PHP

  

  Syarat :

   Web Server : Apache, IIS

   PHP + Extension untuk Oracle Client (php_oci8.dll) Aplikasi berbasis web 

  Konfigurasi PHP

   Edit file php.ini. Biasanya file ini berada pada folder PHP.

  

Cari “extension=php_oci8.dll”

   Hilangkan tanda titik koma (;) pada awal barisnya.  Simpan konfigurasi PHP-nya.  Restart web server. Aplikasi berbasis web (ora1.php) 

  Buat file php untuk mengakses database. Simpan dalam folder webnya (biasanya dalam folder htdocs atau www).

  <?php $c = oci_connect('username', 'password', 'localhost:1521/dbora.serverora.com'); $s = oci_parse($c, 'select * from TblTabungan'); oci_execute($s); while ($res = oci_fetch_array($s, OCI_ASSOC)) {

echo $res['NOREK'] .' - '.$res['NAMA']. "<br>";

} oci_close($c); ?>

  Aplikasi berbasis web (ora1.php)

  Cara memanggilnya adalah dengan alamat http://localhost/ora1.php

  Aplikasi berbasis web (ora2.php) <?php $c = oci_connect('username', 'password', 'localhost:1521/dbora.serverora.com'); $s = oci_parse($c, 'select * from TblTabungan'); oci_execute($s); while ($res = oci_fetch_row($s)) { echo $res[0] .' - '.$res[1]. "<br>"; } oci_close($c); ?>

  Aplikasi berbasis web (ora1.php)

  Cara memanggilnya adalah dengan alamat http://localhost/ora2.php

  Aplikasi berbasis web (ora3.php) <?php $c = oci_connect('db97025', 'db97025', 'localhost:1521/dbora.serverora.com'); $s = oci_parse($c,"BEGIN TambahTabungan(:nama,:kota,:saldo); END;"); $nama='Test Nama'; // boleh dari form $kota='Test Kota'; // boleh dari form $saldo=25555; // boleh diambil dari form oci_bind_by_name($s,':nama',$nama); oci_bind_by_name($s,':kota',$kota); oci_bind_by_name($s,':saldo',$saldo); $res=oci_execute($s); if($res) echo "Tabungan berhasil disimpan<br>"; else echo "Tabungan gagal disimpan<br>"; oci_close($c); ?>

DATABASE

  

TRANSACTION

UNIKOM (2010) Definisi Transaction 

  Sebuah unit logik dari suatu pekerjaan yang terdiri dari 1 atau banyak statement SQL

  

  Merupakan sebuah unit yang atomic, sehingga hanya ada 2 kemungkinan yang terjadi yaitu :

   Data ter-commit (semua perubahan data tersimpan secara permanen )

   Data dibatalkan (semua perubahan data dibatalkan) Contoh Kasus 

  Transaksi transfer antar rekening. Ada 3 SQL yang harus dieksekusi yaitu :

   Menyimpan data transaksi ke tabel transaksi (INSERT)

  

Melakukan pengurangan saldo ke rekening pengirim

(UPDATE)

  

Melakukan penambahan saldo ke rekening penerima

(UPDATE)

  

  Semua SQL harus tereksekusi semua atau dibatalkan semua (atomic). Statement dalam Transaksi 

  COMMIT : Melakukan penyimpanan perubahan data.

  

  ROLLBACK : Melakukan pembatalan perubahan data.

  

  SAVEPOINT : Memberi tanda suatu posisi perubahan data.

  

  ROLLBACK TO savepoint : Melakukan pembatalan perubahan data dengan kembali ke kondisi savepoint tertentu. Awal Transaksi 

  Suatu transaksi database diawali dengan adanya pemanggilan statement Data Manipulation Language (DML) seperti

  

  INSERT 

  DELETE 

  UPDATE Akhir Transaksi 

  

Transaksi berakhir ketika terjadi salah satu hal berikut :

  Pemanggilan statement COMMIT 

  Pemanggilan statement ROLLBACK 

  

Pemanggilan statement Data Definition Language (DDL)

seperti CREATE, ALTER, DROP. Hal ini akan mengakibatkan COMMIT.

   Keluar dari SQL*PLUS secara normal. Hal ini akan mengakibatkan COMMIT

  

Keluar dari SQL*PLUS secara abnormal atau kegagalan sistem (crash, restart). Hal ini akan mengakibatkan ROLLBACK. Kondisi Data Sebelum COMMIT/ROLLBACK 

  Perubahan data dapat dikembalikan (restore) ke kondisi sebelum DML pertama dieksekusi (commit terakhir).

  

  User yang login akan dapat melihat data hasil perubahan, tetapi user lain tidak.

  

  Jika user melakukan DML terhadap baris data, maka data tersebut akan di-lock. User lain tidak bisa mengupdate data tersebut. Kondisi data setelah COMMIT 

  Semua perubahan data tersimpan secara permanen.

  

  Semua SAVEPOINT dihapus

  

  Semua lock dilepas. Sehingga user lain dapat mengupdate data tersebut. Kondisi data setelah ROLLBACK 

  Semua perubahan data dibatalkan. Data kembali ke kondisi sebelum awal transaksi.

  

  Semua SAVEPOINT akan dihapus

  

  Semua lock akan dilepas Demo Transaksi 

  Login ke oracle

  

  Buat sebuah tabel. Misalnya tabel Rekening

  CREATE TABLE rekening( NoRek INTEGER PRIMARY KEY, Nama VARCHAR(10), Saldo NUMBER )

  Demo Transaksi 

  Beri beberapa contoh data

  INSERT INTO rekening VALUES(1,'Ade',1000);

  INSERT INTO rekening VALUES(2,'Badra',2000);

  INSERT INTO rekening VALUES(3,'Cecep',3000); COMMIT; SELECT * FROM rekening;

  Demo Transaksi 

  Buka 2 koneksi ke database dengan cara membuka

  2 SQL*PLUS Demo Transaksi  Eksekusi SQL pada kedua SQL*PLUS.

  SELECT * FROM rekening

  Demo Transaksi

  Kedua layar akan menampilkan data yang sama (hasil commit terakhir).

Demo Transaksi (1)

  Mendemonstrasikan transaksi database dimana suatu perubahan data yang dilakukan oleh seorang user tidak dapat diakses oleh user lain sebelum melakukan COMMIT. Demo Transaksi (1) 

  Lakukan penambahan data baru pada SQLPlus 1

  INSERT INTO rekening

  VALUES(4,'Dede',4000); Demo Transaksi (1)

  Data telah ditambahkan pada koneksi pertama

  Demo Transaksi (1)  Eksekusi SQL pada kedua SQL*PLUS.

  SELECT * FROM rekening

Demo Transaksi (1)

  Data pada koneksi 1 ada 4 baris, sedangkan data pada koneksi 2 hanya ada 3. Ini menunjukkan perubahan data di koneksi pertama tidak bisa diakses/dilihat oleh koneksi 2. Hal ini dikarenakan perubahan data belum di-COMMIT.

  Demo Transaksi (1)  Lakukan COMMIT di koneksi pertama.

  COMMIT

Demo Transaksi (1)

  Data pada koneksi 1 ada 4 baris, sedangkan data pada koneksi 2 hanya ada 3. Ini menunjukkan perubahan data di koneksi pertama tidak bisa diakses/dilihat oleh koneksi 2. Hal ini dikarenakan perubahan data belum di-COMMIT.

  Demo Transaksi (1)  Eksekusi SQL pada kedua SQL*PLUS.

  SELECT * FROM rekening

Demo Transaksi (1)

  Setelah COMMIT pada koneksi 1, maka semua perubahan yang telah dilakukan jadi dapat dilihat oleh user lain. Semua koneksi menampilkan baris sebanyak 4.

Demo Transaksi (2)

  Mendemonstrasikan transaksi database dimana suatu perubahan data yang dilakukan oleh seorang user akan mengunci (lock) baris-baris yang berubah sehingga user lain tidak bisa memanipulasi baris-baris tersebut. Demo Transaksi (2)  Lakukan update pada koneksi 1.

  UPDATE rekening SET saldo=5555 WHERE norek=1;

  Demo Transaksi (2) Data rekening dengan norek 1 telah diupdate.

  Demo Transaksi (2)  Eksekusi SQL berikut di kedua koneksi.

  SELECT * FROM rekening WHERE norek=1;

  Demo Transaksi (2)

  Koneksi pertama dapat melihat perubahan, tetapi user kedua tidak melihat perubahan tersebut.

  Demo Transaksi (2) 

  Eksekusi SQL berikut di kedua koneksi kedua yang akan mengupdate data pada baris yang dikunci.

  UPDATE rekening SET saldo=saldo-555 WHERE norek=1;

  Demo Transaksi (2) User ke-dua akan menunggu sampai baris yang dikunci dilepas oleh user pertama dengan COMMIT atau ROLLBACK.

  Demo Transaksi (2)  Lakukan COMMIT di koneksi pertama.

  COMMIT;

  Demo Transaksi (2) Ketika koneksi pertama melakukan COMMIT, maka lock pada baris norek 1 dilepas, sehingga akan membuat koneksi 2 melakukan update.

  Demo Transaksi (2)  Eksekusi SQL berikut di kedua koneksi.

  SELECT * FROM rekening WHERE norek=1;

  Demo Transaksi (2) Hasil perubahan user 2 dapat dilihat di koneksi 2, tetapi belum terlihat di user 1. Ini dikarenakan user 2 belum melakukan COMMIT.

  Demo Transaksi (2)  Lakukan COMMIT di koneksi kedua.

  COMMIT;

  Demo Transaksi (2) Ketika koneksi pertama melakukan COMMIT, maka lock pada baris norek 1 dilepas, sehingga akan membuat koneksi 2 melakukan update.

  Demo Transaksi (2)  Eksekusi SQL berikut di kedua koneksi.

  SELECT * FROM rekening WHERE norek=1;

  Demo Transaksi (2)

  Semua perubahan data telah COMMIT. Semua user dapat melihat data yang sama.

Demo Transaksi (3)

  Mendemonstrasikan transaksi database menggunakan SAVEPOINT Demo Transaksi (2) 

  Eksekusi SQL berikut pada koneksi 1

  INSERT INTO rekening

  VALUES(6,'Ferdi',6000); SAVEPOINT SP1; DELETE FROM rekening WHERE NoRek<5; SAVEPOINT SP2; DELETE FROM rekening;

  1

  2

  3

  nomor rekening 6 Titik aman SP1. Setelah data ditambah 1 baris Hapus data yang nomor rekening < 5 Titik aman SP2. Setelah penghapusan data yang nomor rekening < 5 Hapus semua data rekening. Demo Transaksi (2) 

  Eksekusi SQL berikut pada koneksi 1

  SELECT * FROM rekening

  Demo Transaksi (2) 

  Eksekusi SQL berikut pada koneksi 1

  ROLLBACK TO SAVEPOINT SP2; SELECT * FROM rekening;

  Demo Transaksi (2) 

  Eksekusi SQL berikut pada koneksi 1

  ROLLBACK TO SAVEPOINT SP1; SELECT * FROM rekening;

  Demo Transaksi (2) 

  Eksekusi SQL berikut pada koneksi 1

  ROLLBACK; SELECT * FROM rekening;