Sabtu, 29 November 2014

Laporan Praktikum DBD ke 9

KONEKSI POSTGRESQL PADA JAVA (Netbeans)

A. LANDASAN TEORI
1 Langkah-langkah Koneksi database
Terdapat beberapa langkah yang secara umum harus dilakukan sehingga aplikasi
 yang berbasis Java dapat berinteraksi dengan database server. Langkah-langkah tersebut sebagai berikut :
1.Impor package java.sql
2.Memanggil Driver JDBC
3.Membangun Koneksi
4.Membuat Statement
5.Melakukan Query
6.Menutup Koneksi

1. Impor package java.sql
Pertama-tama yang harus dilakukan sebelum Anda membuat program JDBC adalah mengimpor package java.sql terbih dahulu, karena di dalam package java.sql tersebut terdapat kelas-kelas yang akan digunakan dalam proses-proses berintekasi dengan database server misalnya kelas DriverMaganer, Connection, dan ResultSet. Hal ini sangat penting dilakukan karena bagi pemula seringkali lupa untuk mengimpor package yang kelas-kelas yang akan digunakan terdapat di dalamnya, sehingga mengakibatkan kegagalan dalam mengkompile program Java. Adapun listing untuk mengimpor package java.sql adalah sebagai berikut :
Import java.sql.*;
Listing ini dituliskan sebelum Anda menulis kelas.

2. Memanggil Driver JDBC
Langkah pertama untuk melakukan koneksi dengan database server adalah dengan memanggil JDBC Driver dari database server yang kita gunakan. Driver adalah library yang digunakan untuk berkomunikasi dengan database server. Driver dari setiap database server berbeda-beda, sehingga Anda harus menyesuaikan Driver JDBC sesuai dengan database server yang Anda gunakan. Berikut ini adalah listing program untuk memanggil driver JDBC. 
Class.forName(namaDriver); atau Class.forName(namaDriver).newInstance();
Kedua cara di atas memiliki fungsi yang sama yaitu melakukan registrasi class driver dan melakukan intansiasi. Apabila driver yang dimaksud tidak ditemukan, maka program akan menghasilkan exception berupa ClassNotFoundException. Untuk menghasilkan exception apabila driver tidak
ditemukan, maka diperlukan penambahan try-catch. Adapun cara menambahkan try-catch untuk penanganan error apabila driver tidak ditemukan, sebagai berikut :
Try {
Class.forName(namaDriver);
} catch (ClassNotFoundException e) {
Penanganan Error ClassNotFoundException
}
Contoh listing memanggil driver menggunakan PosqgreSQL adalah :
try {
Class.forName(“org.postgresql.Driver”);
} catch (ClassNotFoundException e) {
System.ou t.println(“Pesan Error : “ + e)
}
 Berikut ini adalah daftar nama-nama driver dari beberapa database server yang sering digunakan.

Database Server
Nama Driver
JDBC-ODBC
sun.jdbc.odbc.JdbcOdbcDriver
MySQL
com.mysql.jdbc.Driver
PostgreSQL
org.postgresql.Driver
Microsoft SQLServer
com.microsoft.jdbc.sqlserver.SQLServerDriver
Oracle
oracle.jdbc.driver.OracleDriver
IBM DB2
COM.ibm.db2.jdbc.app.DB2Driver

3. Membangun Koneksi 
Setelah melakukan pemanggilan terhadap driver JDBC, langkah selanjutnya adalah membangun koneksi dengan menggunakan interface Connection. Object Connection yang dibuat untuk membangun koneksi dengan database server tidak dengan cara membuat object baru dari interface Connection melainkan dari class DriverManager dengan menggunakan methode getConnection().
Connection koneksi = DriverManager.getConnection(<argumen>);
Untuk menangani error yang mungkin terjadi pada proses melakukan koneksi
 dengan database maka ditambahkan try-catch. Exception yang akan dihasilkan pada proses ini adalah berupa SQLException. Adapun cara penulisan listingnya adalah sebagai berikut :
try {
koneksi database
} catch (SQLException sqle){
penanganan error koneksi
}
Ada beberapa macam argumen yang berbeda dari methode getConnection() yang dipanggil dari DriverManager, yaitu : 
getConnection(String url)
Pada methode diatas hanya memerlukan argumen URL, sedangkan untuk data user dan password sudah diikutkan secara langsung. Adapun penulisan nilai sebagai berikut :
jdbc:<DBServer>://[Host][:Port]/<namaDB>?<user=User>&<password=Password> 
Berikut ini contoh penggunaan methode ini didalam program :
try {
String url = “jdbc: postgresql://localhost:3306/Dbase? User = adi & password
= pas”;
Connection koneksi = DriverManager.getConnection(url);
System.out.prinln(“Proses apabila koneksi sukses”);
} catch (SQLException sqle) {
System.out.println(“Proses apabila koneksi gagal dilakukan”);
}
getConnection(String url, Properties info)
Pada methode ini memerlukan URL dan sebuah object PropertiesSebelum menggunakan methode ini, Anda harus melakukan import package berupa java.util.*, ini dikarenakan object Properties terdapat pada package tersebut. Object Properties berisikan spesifikasi dari setiap parameter database misalnya user name, password, autocommit, dan sebagainya.
Berikut ini contoh penggunaan methode ini didalam program :
try {
String url = “jdbc: postgresql://localhost:5432/praktikumdbd ”;
Properties prop = new java.util.Properties(); // tidak mengimpor kelas
prop.put(“user”,”NamaUser”);
prop.put(“password”,”datapassword”);
Connection koneksi = DriverManager.getConnection(url, prop);
System.out.prinln(“Proses apabila koneksi sukses”);
} catch (SQLException sqle) {
System.out.println(“Proses apabila koneksi gagal dilakukan”);
}
getConnection(String url, String user, String password) Pada methode ini memerlukan argumen berupa URL, user name, dan password. Methode ini secara langsung mendefinisikan nilai URL, user name dan password.
Berikut ini contoh penggunaan methode ini didalam program :
try {
String url = “jdbc: postgresql://localhost:5432/ praktikumdbd ”;
String user = “adi”
String password “ternate”
Connection koneksi = DriverManager.getConnection(url, user, password);
System.out.prinln(“Proses apabila koneksi sukses”);
Berikut ini adalah daftar penulisan URL dari beberapa database server yang sering digunakan.

Database
Server
Nama URL
Contoh penggunaan
JDBC-ODBC
jdbc:odbc:<NamaDatabase>
jdbc:odbc:Dbase
MySQL
jdbc:mysql://<nmHost>:<port>/<n
mDB>
jdbc:mysql://localhost:3306/Dbase
PostgreSQL
jdbc:postgresql://<nmHost>:<port>
/<nmDB>
jdbc:postgresql://localhost:5432/Dbas
e
Microsoft
SQLServer
jdbc:microsoft:sqlserver://<nmHost
>:<port>;
DatabaseName=<namaDatabase>
jdbc:microsoft:sqlserver://localhost:14
33; DatabaseName=Dbase
Oracle
jdbc:oracle:thin:@<nmHost>:<port
>:<nmDB>
jdbc:oracle:thin:@localhost:1521:Dba
se
IBM DB2
jdbc:db2:<NamaDatabase>
jdbc:db2:Dbase


4. Membuat StatementJDBC API menyediakan interface yang berfungsi untuk melakukan proses pengiriman statement SQL yang terdapat pada package java.sql. Statement yang ada secara umum digunakan terdiri dari berikut  Statement Interface ini dibuat oleh methode onnection.createStatement(). Object Statement digunakan untuk pengiriman statement SQL tanpa parameter serta Setiap SQL statement yang dieksekusi dikirim secara utuh ke database.
 Statement stat = Connection.createStatement();
PreparedStatement Interface ini dibuat oleh methode Connection.prepareStatement()Object PreparedStatement digunakan untuk pengiriman statement SQL dengan atau tanpa parameter. Interface ini memiliki performa lebih baik dibandingkan dengan interface Statement karena dapat menjalankan beberapa proses dalam sekali pengiriman perintah SQL, pengiriman selanjutnya hanya parametered querynta saja
PreparedStatement stat = Connection.prepareStatement();


5. Melakukan Query
Setelah kita memiliki object statement, kita dapat menggunakannya untuk melakukan pengiriman perintah SQL dan mengeksekusinya. Methode eksekusi yang digunakan untuk perintah SQL terbagi menjadi dua bagian yaitu untuk perintah SELECT methode eksekusi yang digunakan adalah executeQery() dengan nilai kembaliannya adalah ResultSet, dan untuk perintah INSERT, UPDATE, DELETE methode eksekusi yang digunakan adalah executeUpdate(). 
Berikut ini adalah contoh melakukan eksekusi perintah SQL dan mengambil hasilnya (ResultSet) dengan menggunakan perintah SELECT 
String sql = “SELECT kode, nama, alamat, kelas FROM dataSiswa”;
ResultSet set = stat.executeQuery(sql);
while (set.next()) {
String kode = set.getString("kode");
String nama = set.getString("nama");
String alamat = set.getString("alamat");
String kelas = set.getString("kelas");
}
Berikut ini adalah contoh melakukan eksekusi perintah SQL dengan  menggunakan perintah DELETE.
String sql = "DELETE FROM data_siswa WHERE kode = “1234”;
PreparedStatement stat = konek.prepareStatement(sql);
stat.executeUpdate();

6. Menutup Koneksi
Penutupan terhadap koneksi database perlu dilakukan agar sumber daya yang digunakan oleh object Connection dapat digunakan lagi oleh proses atau program yang lain. Sebelum kita menutup koneksi 
database, kita perlu melepas object Statement dengan kode sebagai berikut :
 statement.close();
Untuk menutup koneksi dengan database server dapat kita lakukan dengan kode sebagai berikut :
connection.close();

B. TUGAS PRAKTIKUM
1. Buatlah koneksi seperti
contoh listing kode diatas dengan database kalian masing2 !


















2. Buatlah form pada netbeans dan buatlah tombol insert, update, delete, tampil dan pencarian seperti dibawah !





































3. Buat Event tiap tombol seperti contoh listing diatas dengan catatan memakai database
praktikan sendiri dan menggunakan tabel mahasiswa. Untuk tampil, data munculkan pada jtabel atau text area.























Berikut adalah list program untuk tombol tampil:



Berikut adalah list program untuk program tombol reset






C.KESIMPULAN

Praktek Langkah-langkah Koneksi database dengan java di Netbeans
Materi kali ini akan sedikit membubuhkan tutorial untuk pengkoneksian dan
penyampaian contohnya. Seperti berikut langkah-langkahnya :
1. buatlah project baru pada netbeans
2. pada project tersebut, klik kanan – properties
3. pilih Libraries pada list Properties
4. add Library
7. add JAR/Folder
8. browse file konektor PostgreSQL
9. ambil file konektor, semisal :postgresql-9.0-801.jdbc4.jar atau versi yang lain.
10. kemudian open
11. Klik OK

D. MANFAAT

Semoga sedikit tulisan yang ada di dalam blog ini bisa bermanfaat untuk sama pribadi khususnya 

dan untuk pembaca pada umumnya,,

E. DAFTAR PUSTAKA

MODUL PRAKTIKUM DBD 9.



Jumat, 21 November 2014

Laporan Praktikum DBD 8

                                                 FUNGSI, PL / PGSQL DAN TRIGER



A.LANDASAN TEORI


1. Pendukung Fungsi
PostgreSQL memiliki fungsi yang dapat mengubah suatu nilai dalam suatu kolom
atau barismenjadi huruf besar. Fungsi tersebut bernama upper(nama_kolom), berfungsi
memanggilfungsi upper dengan nama_kolom sebagaii argumen sehingga menghasilkan
nilai padakolom dalam huruf besar. Berikut Struktur SQL untuk menampilkan data dalam
huruf besar semua :
SELECT upper ([nama kolom]) FROM [nama tabel];
Berikut struktur SQL untuk menampilkan data dimana huruf pertama saja yang besar :
SELECT initcap ([nama kolom]) FROM [nama tabel];


2. Fungsi
 Fungsi SQL adalah sebuah kumpulan query, biasanya query yang detail dan
panjang yang dibungkus menjadi satu dan disimpan dalam database dan kemudian
apabila diperlukan hanya tinggal mengaksesnya tanpa mengetikan query detail.
Sedangkan untuk memunculkan fungsi dapat menggunakan query \df.
Ada beberapa konsep yang menarik dari fungsi antara lain:
· Bahasa yang dipakai dapat didefenisikan sendiri dengan tersedianya parameter
   LANGUAGE, tanpa harus mengkompilasi ulang PostgreSQL.
· Kita dapat membuat dua buah fungsi dengan nama yang sama namun
   parametermasukkannya yang berbeda, baik tipe data maupun jumlahnya.
Ada beberapa faktor yang perlu diperhatikan dalam membuat fungsi antara lain:
· Nama Fungsi
· Nomor dari fungsi argument
· Tipe data dari setiap argument
· Tipe dari hasil fungsi
· Fungsi action
· Bahasa yang digunakan oleh fungsi action.
Berikut contoh sederhana pembuatan fungsi SQL untuk perkalian dari tiga inputan :


db_personal=> CREATE FUNCTION perkalian (FLOAT, FLOAT, FLOAT)
db_personal-> RETURNS FLOAT
db_personal-> AS 'SELECT ($1 + $2) * $3;'
db_personal-> LANGUAGE 'sql';
CREATE

db_personal=> SELECT perkalian (10,10,10);
perkalian
-----------
200
(1 row)

Contoh yang lain dalam pembuatan fungsi SQL untuk mencari jumlah pegawai dari tabel
pegawai berikut :

ID
NAMA
ALAMAT
NO.TELP
JABATAN
Gaji
1
Hendro
Solo
081223300
Teknisi
900000
2
Tika
Semarang
0897735357
Sekretaris
2000000
3
Wijaya
Jogjakarta
0865433225
Kepala
3000000
4
Dodi
Banyuwangi
076544677
Teknisi
1000000

Berikut kode SQL nya :
Create function jumlah_pegawai()
Returns bigint
As ‘select count(*) as jumlah_pegawai from pegawai;’
Language ‘sql’;
Maka hasilnya sebagai berikut :
Select jumlah_pegawai();
Jumlah_pegawai
----------------------
4
(1 row)


3. Fungsi PL/PGSQL
PL/PGSQL merupakan bahasa yang lain untuk membuat sebuah fungsi, biasanya
bahasa ini digunakan untuk menangani fungsi yang lebih kompleks. Pl/pgsql sudah
terdapat dalam instalasi PostgreSQL.
Keuntungan penggunaan Fungsi PL/PGSQL :
1. Meningkatkan kinerja karena mengurangi pengiriman kode dari klien ke server.
2. Meningkatkan keamanan karena pengaksesan data tertentu ditangani dalam server.
3. Meningkatkan konsistensi data saat sejumlah aplikasi memanggil prosedur yang
sama;
Sebaliknya kelemahannya yaitu server akan lebih terbebani karena banyak proses
yang harus ditangani. Sedangkan query PL/PGSQL agar lebih mudah di pahami akan
dibagi menjadi 2 yaitu pembuatan fungsi dan pembuatan definisi



- Berikut Struktur pembuatan fungsi dalam pl/pgsql

1. Pembuatan fungsi :

CREATE [OR REPLACE] FUNCTION nama_fungsi ( argtype , ... ])
RETURNS tipe_data
AS ‘definisi
LANGUAGE ‘plpgsql’ ;

2. Pembuatan definisi :

DECLARE nama_variable tipe_data /* deklarasi variabel, type */
BEGIN
/* prosedural dan SQL masuk disini seperti select, update dan sebagainya*/
Return nama_variable /* blok ini yang wajib */
END;

- Menghapus fungsi :

DROP FUNCTION nama_fungsi(paramater, parameter, parameter ... );
Contoh :
DROP FUNCTION pembagian(text);
Berikut ini implementasi dari contoh penggunaan fungsi dengan bahasa PL/PGSQL:
db_personal=> CREATE FUNCTION pl_caripegawai (integer)
db_personal-> RETURNS text
db_personal-> AS 'DECLARE hasil TEXT;
db_personal'> BEGIN
db_personal'> SELECT INTO hasil nama as nama_mahasiswa
db_personal'> FROM pegawai
db_personal'> WHERE id = $1;
db_personal'> RETURN hasil;
db_personal'> END;'
db_personal-> LANGUAGE 'plpgsql';

CREATE
db_personal=> SELECT pl_caripegawai (1);
pl_caripegawai
-----------------
Hendro
(1 row)
db_personal=> SELECT pl_caripegawai (2);
pl_caripegawai
--------------------
Tika
(1 row)

Contoh berikut menunjukkan query percabangan yang akan menampilkan nilai terkecil
dari dua buah parameter :
create function percabangan (x integer,y integer)
returns integer
as ‘declare nilai_terkecil integer;
begin
if x < y then
select into nilai_terkecil x;
else
select into nilai_terkecil y;
end if;
return nilai_terkecil;
end;’
language ‘plpgsql’;
Hasil sebagai berikut :
Select percabangan (300,250);
Percabangan
-----------------
250
(1 row)

Contoh berikut menunjukkan query perulangan yang akan menampilkan akumulasi dari
jumlah perulangan :
Create function perulangan (a integer,b integer)
Returns integer
As ‘ declare nilai_awal integer default a;
Hasil integer default 0;
Begin

Loop

If nilai_awal > b then
Exit;
End if;
Hasil := hasil+nilai_awal;
Nilai_awal := nilai_awal+1;

End loop;

Return hasil;
End;’
Language ‘plpgsql’;
Hasilnya sebagai berikut :

Select perulangan (1,5);
Perulangan
----------------
15
1 (row)


4. Triger
 Trigger digunakan untuk menyisipkan sebuah fungsi pada saat suatu record di-
INSERT, UPDATE dan DELETE. Trigger sangat ideal untuk mengecek atau
memodifikasi sebuah data pada kolom sebelum dimasukkan ke dalam database, sehingga
sebuah fungsi dapat dipanggil setiap saat secara otomatis ketika sebuah row akan
dimodifikasi. Ciri khas dari fungsi yang diperuntukkan untuk trigger adalah
menghasilkan output bertipe OPAQUE. Tipe opaque adalah sebuah tipe yang
menginformasikan pada database bahwa fungsi tersebut tidak menghasilkan satu dari tipe
data yang ditetapkan SQL dan tidak secara langsung dapat digunakan dalam statemen
SQL. Language (bahasa) PL/PGSQL dapat digunakan untuk trigger procedure, fungsi
untuk trigger ini memiliki beberapa variabel khusus yang terdeklarasi secara otomatis.
Variabel tersebut antara lain:
1.NEW: Variabel yang berisi nilai baru suatu record pada saat INSERT atau UPDATE,
bertipe RECORD.
2.OLD: Variabel yang berisi nilai lama suatu record pada saat UPDATE atau DELETE,
juga bertipe RECORD.
Berikut ini beberapa contoh penggunaan fungsi sebagai trigger procedure:
Contoh : trigger berikut ini memastikan isi field atau kolom nama pada tabel anggota
selalu huruf besar.



langkah pertama buatlah fungsinya terlebih dahulu :

db_personal=> CREATE FUNCTION tes_trigger()
db_personal-> RETURNS opaque
db_personal-> AS 'BEGIN
db_personal'> NEW.nama := UPPER(NEW.nama);
db_personal'> RETURN NEW;
db_personal'> END;'
db_personal-> LANGUAGE 'plpgsql';
CREATE

Kemudian lanjutkan dengan pembuatan trigger yang berfungsi untuk memanggil
fungsi secara otomatis ketika kita melakukan INSERT ataupun UPDATE pada tabel anggota.

db_personal=> CREATE TRIGGER tes1_trigger
db_personal-> BEFORE INSERT
db_personal-> ON anggota
db_personal-> FOR EACH ROW
db_personal-> EXECUTE PROCEDURE tes_trigger();
CREATE

cobalah INSERT beberapa data ke dalam tabel anggota:

db_personal=> INSERT INTO anggota (id, nama)
db_personal-> VALUES (26, 'andhie');
INSERT 70831 1
db_personal=> INSERT INTO anggota
db_personal-> VALUES (83, 'rWatia');
INSERT 70832 1

tampilkan isi dari tabel anggota, hasilnya seperti pada tabel di bawah ini. Jadi
setiap data yang kita INSERT walaupun dalam penulisannya menggunakan huruf kecil
namun secara otomatis trigger akan memanggil fungsi yang bertugas untuk mengganti
setiap data yang masuk agar hasilnya nanti selalu menjadi huruf besar:

db_personal=> SELECT * FROM anggota;
id | nama
--------+-------------
26 | ANDHIE
83 | RWATIA

(2 rows)



B. TUGAS PRAKTIKUM RUMAH MENGGUNAKAN MYSQL\ SQL

1. Buatlah fungsi konversi suhu dari Fahrenheit ke derajat celcius dengan rumus konversi
sebagai berikut : celcius= (5*(nilai Fahrenheit-32))/9!
Kemudian jalankan hasilnya dengan menSELECT fungsi tersebut !

SQL:












MYSQL:







2. Buatlah fungsi untuk mencari alamat mahasiswa dari tabel mahasiswa berdasarkan nama
mahasiswa. Kemudian jalankan dengan perintah SELECT !
3. Buatlah fungsi untuk menghitung nilai dengan menggunakan bahasa pl/sql !

Nilai > 100 atau Nilai<0
Nilai Salah
Nilai ≥ 90
Nilai A
70 ≤ Nilai < 90
Nilai B
60 ≤ Nilai < 70
Nilai C
50 ≤ Nilai < 60
Nilai D
0 ≤ Nilai < 50
Nilai E

Kemudian jalankan hasilnya dengan menSELECT fungsi tersebut !


















4. Buatlah fungsi menggunakan pl/pgsql untuk mencari bilangan ganjil atau genap dari
bilangan yang diinputkan. Kemudian jalankan dengan perintah SELECT !
5. Tambahkan kolom modifikasi pada tabel mahasiswa. Dimana setiap ada insert atau
update maka tanggal pada kolom modifikasi akan menunjukkan tanggal perubahan
tersebut dilakukan.





C. EVALUASI PERBANDINGAN

Evaluasi perbandingan pada praktikum kali ini yaitu bahwa struktur pembuatan fungsi, PL/PGSQL dan trigger, pada 2 DBMS yaitu postgre dan MySQL sangat-sangat berbeda.
misalnya pada nomer satu aja di postgre setelah return, langsung menuju ke proses selanjutnya, langsung ke as ‘select (proses yang diinginkan), sedangkan di MySQL, setelah return type, dia pake return lagi baru ke bagian perhitungannya.

D. KESIMPULAN 

Fungsi SQL adalah sebuah kumpulan query, biasanya query yang detail dan panjang yang dibungkus menjadi satu dan disimpan dalam database dan kemudian apabila diperlukan hanya tinggal mengaksesnya tanpa mengetikan query detail.
Trigger digunakan untuk menyisipkan sebuah fungsi pada saat suatu record di-INSERT, UPDATE dan DELETE. Trigger sangat ideal untuk mengecek atau memodifikasi sebuah data pada kolom sebelum dimasukkan ke dalam database, sehingga sebuah fungsi dapat dipanggil setiap saat secara otomatis ketika sebuah row akan dimodifikasi.

E. DAFTAR PUSTAKA

Modul Praktikum DBD ke 8