Jumat, 12 Desember 2014

LANDASAN TEORI

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 MySQL adalah :
try {
Class.forName(“org.postgresql.Driver”);
} catch (ClassNotFoundException e) {
System.out.println(“Pesan Error : “ + e)
}

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 :
dipanggil dari DriverManager, yaitu :

1. 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=Pasword>
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”);
}

2. getConnection(String url, Properties info)
Pada methode ini memerlukan URL dan sebuah object Properties. Sebelum 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”);
}

3. 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”);
} catch (SQLException sqle) {
System.out.println(“Proses apabila koneksi gagal dilakukan”);
}

4. Membuat Statement
JDBC 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 Connection.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();

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();

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

HASIL 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 !
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.





4. Buatlah seperti nomor 2. Dengan aturan terdapat kelas koneksi sendiri sehingga tidak menulis ulang pemanggilan driver jdbc, url, dan conektion nya pada saat insert,update, delete dan tampil data.

5. Bagaimana perbedaan penggunaan statement dan PrepareStatement, buatlah program untuk pembuktian dari perbedaan tersebut.
Memiliki Output yang sama, namun kualitas PrepareStatement Lebih baik karena menangkal SQL Injection.


Untuk hasil dari setiap aksi pada tombol





KESIMPULAN
PostgreSQL dapat kita koneksikan dengan java yang berfungsi sebagai wadah penyimpanan data yang akurat sebagaimana sebuah fungsi dari database itu sendiri. Dengan demikian, jika suatu program yang membutuhkan tempat penyimpanan yang berfungsi untuk insert update dan delete, bisa menggunakan database. yang dapat dilakukan dengan langkah-langkah diatas.
KRITIK SARAN DAN MANFAAT
Semoga bermanfaat dan jika ada kekurangan harap dikritik
DAFTAR PUSTAKA
Musthofa, Aziz. 2013. Modul Praktikum Desain Basis Data

Senin, 08 Desember 2014

I. LANDASAN TEORI
Membuat Report di Java-Netbeans Menggunakan JasperReport dan Ireport. Sebelum kita mengetahui cara membuatnya, sebaiknya kita mengetahui pengertian dari JasperReport dan iReport. Berikut pengertiannya :
iReport     : adalah Visual Designer untuk membuat laporan yang komplek, menggunakan jasperReport Libarary.
iReport adalah tools yang memudahkan Anda membuat laporan. Biasanya iReport di gunakan dalam bahasa pemrograman Java. iReport bersifat open source jadi Anda bebas menggunakan dan tidak perlu membeli lisensi untuk mengembangkannya.
JasperReport  : adalah software(library) open source untuk reporting.
jasperReport dapat anda download di alamat : http://jasperforge.org/
JasperReports adalah sumber terbuka Java alat pelaporan yang dapat menulis ke berbagai sasaran, seperti: layar, printer, menjadi file PDF, HTML, Microsoft Excel, RTF, ODT, nilai-nilai yang dipisahkan dengan koma atau XML .
Dapat digunakan dalam aplikasi Java aktif, termasuk Java EE atau aplikasi web, untuk menghasilkan konten dinamis. Membaca dengan instruksi dari file XML atau .jasper.JasperReports adalah bagian dari inisiatif tumpukan sumber terbuka Lisog
JasperReports adalah open source pelaporan perpustakaan yang dapat dimasukkan ke dalam aplikasi Java. Fitur termasuk:    Scriptlets dapat menyertai definisi laporan[1] yang definisi laporan dapat memohon pada setiap titik untuk melakukan proses administrasi tambahan. Scriptlet dibangun menggunakan Java, dan memiliki banyak kait yang dapat dipanggil sebelum atau setelah tahap laporan generasi, seperti laporan, halaman, kolom atau kelompok.  Sub-laporan[2] Untuk pengguna dengan lebih canggih laporan manajemen persyaratan, laporan yang dirancang untuk JasperReports dapat dengan mudah diimpor ke JasperServer - server interaktif laporan...
JasperReports laporan didefinisikan dalam XML file format, disebut JRXML, yang dapat menjadi tangan-kode, dihasilkan, atau dirancang menggunakan alat. File format didefinisikan oleh Dokumen jenis definisi (DTD) atau skema XML untuk versi yang lebih baru, menyediakan interoperabilitas terbatas. [3] Perbedaan utama antara menggunakan XML dan .jasper file adalah bahwa XML file harus disusun pada saat runtime menggunakan JasperCompileManager kelas.

II. HASIL PRAKTIKUM
1. Buatlah file jrxml seperti tutorial diatas namun menggunakan database akademik. Laporan berupa NIM,nama mahasiswa, nama Fakultas dan Jurusan.












 2. Buatlah form pada netbeans dan buatlah tombol untuk pemanggilan file ireport yang telah dibuat!


 3. Buat modifikasi laporan diatas sehingga laporan yang akan di print berdasarkan NIM mahasiswa yang berasal dari textfield!



KESIMPULAN
Irepot adalah aplikasi didalam netbean maupun diluar netbean yang berfungsi untuk menampilkan laporan yang terdapat dalam database. 
KRITIK SARAN DAN MANFAAT
Jika laporan kali ini masih ada kekurangan, mohon kritikannya, dan semoga bermanfaat
DAFTAR PUSTAKA
Erik Swenson (2002-09-20). "Laporan dibuat mudah dengan JasperReports". JavaWorld.com. Diperoleh 2014-12-8

Christian Brell, Tobias Kieninger (Januari 2007). "Perangkat pelaporan Freie im Vergleich" (PDF). Orientasi dalam objek; JavaSpektrum . Diperoleh 2014-12-8
David R. Heffelfinger. "JasperReports Tutorial/panduan memulai". Diperoleh 2014-12-8



[1] Erik Swenson (2002-09-20). "Laporan dibuat mudah dengan JasperReports". JavaWorld.com. Diperoleh 2014-12-8
[2] Christian Brell, Tobias Kieninger (Januari 2007). "Perangkat pelaporan Freie im Vergleich" (PDF). Orientasi dalam objek; JavaSpektrum . Diperoleh 2014-12-8
[3] David R. Heffelfinger. "JasperReports Tutorial/panduan memulai". Diperoleh 2014-12-8

Minggu, 23 November 2014


PL/pgSQL adalah procedural language yang loadable (dapat langsung digunakan tanpa restart server) pada sistem database 
Function yang telah anda buat menggunakan PL/pgSQL dapat digunakan sebagaimana function bawaan yang sudah ada di server database PostgreSQL. Misalnya, anda dapat membuat fungsi komputasi kondisional yang kompleks menggunakan PL/pgSQL, kemudian menggunakannya untuk membuat operator atau menggunakannya untuk membuat index di server database PostgrSQL.
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.
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)
Struktur PL/pgSQL
Setelah anda berhasil membuat fungsi, mari kita urai satu-per-satu apa yang telah anda buat. PL/pgSQL merupakan bahasa yang dibangun dari blok-blok. Syntax lengkap untuk mendefinisikan sebuah function harus membentuk sebuah blok. Sebuah blok didefinisikan sebagai berikut:
[<<label>>]
[DECLARE
     declaration]BEGIN     statement
END [label];

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:
• NEW: Variabel yang berisi nilai baru suatu record pada saat INSERT atau UPDATE, bertipe RECORD.
• 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]

PL/SQL pada MYSQL

Syntak untuk membuat procedure dalam MySQL adalah sebagai berikut.
CREATE
    [DEFINER = { user | CURRENT_USER }]
    PROCEDURE sp_name ([proc_parameter[,...]])
    [characteristic ...] routine_body
CREATE
    [DEFINER = { user | CURRENT_USER }]
    FUNCTION sp_name ([func_parameter[,...]])
    RETURNS type
    [characteristic ...] routine_body
Keterangan
1. proc_parameter (hanya pada procedure):
    [ IN | OUT | INOUT ] param_name type
·         IN parameter dilewatkan ke dalam procedure tetapi modifikasi nilai dari parameter ini tidak kelihatan setelah procedure tersebut dipanggil.
·         Out parameter merupakan parameter yang dilewatkan dari dalam procedure ke pemanggil procedure tersebut. Nilai inisialisasi saat memanggil adalah null dan hasil parameter akan kelihatan setelah procedure dipanggil.
·         INOUT parameter diinisilaisai oleh pemanggil procedure, kemudian hasil modifikasinya tersebut akan kelihatan setelah procedure tersebut dipanggil.
2. characteristic
    LANGUAGE SQL
  | [NOT] DETERMINISTIC
  | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
  | SQL SECURITY { DEFINER | INVOKER }
  | COMMENT 'string'
3. routine_body:
Valid SQL procedure statement
Routine body berisi syntax-syntax sql yang valid, seperti insert atau select. Bisa juga berisi compound. Compount diapit oleh begin… end. Syntax dari compound system adalah sebagai berikut.
[begin_label:] BEGIN
    [statement_list]
END [end_label]
Compound ini bisa diisi dengan label. Begin label dan end label harus sama. Di dalam compound juga bisa berisi deklarai variabel, looping atau kontrol program lainnya. Setiap Function harus punya return value untuk mengembalikan nilai yang dihasilkan


Trigger jika diartikan secara bahasa sederhana yaitu suatu pemicu, jika secara bahasa trigger merupakan prosedur yang berhubungan dengan table, view, skema atau database yang dijalankan secara implicit pada saat terjadi sebuah event. Trigger diaktifkan berdasarkan waktu yang diinginkan trigger itu bekerja yang biasa disebut dengan Trigger Timing.

Trigger Timing memiliki 3 timing atau waktu pengaktifan trigger, yaitu:

1. BEFORE : trigger dijalankan sebelum DML event pada tabel
2. AFTER : trigger dijalankan setelah DML event pada tabel
3. INSTEAD OF : trigger dijalankan pada sebuah view.

Sedangkan untuk Trigger itu sendiri memiliki 3 event yaitu:
1. INSERT
2. UPDATE
3. DELETE

Berikut adalah penggunaan dari Event Trigger diatas:
1. Insert
Insert berfungsi untuk memasukkan/menginput data ke dalam tabel, fungsi insert disini jika tabel pertama diinput data yang diinginkan, maka secara auto data tersebut akan masuk kedalam tabel kedua. Penggunaan perintah trigger insert ini adalah sebagai berikut:

Delimiter $$
CREATE TRIGGER auto_insert AFTER INSERT ON mahasiswa FOR EACH ROW
BEGIN
INSERT INTO password(nim,password) VALUES (NEW.nim,md5(NEW.password));
END;
$$ DELIMITER

2. Update
Update pada trigger berfungsi sebagai mana Edit, jika data pada tabel pertama diupdate makan akan secara automatis tabel kedua juga akan terupdate sesuai dengan data yang diupdate. Penggunaan Perintah Update pada Mysql adalah sebagai berikut:

DELIMITER $$
CREATE TRIGGER auto_update BEFORE UPDATE ON mahasiswa_1 FOR EACH ROW
BEGIN
UPDATE mahasiswa_2 SET nama=NEW.nama where nim=NEW.nim;
END;
$$ DELIMITER

3. Delete
Sama seperti perintah trigger sebelumnya, Delete berfungsi menghapus data pada tabel, dan jika tabel pertama di hapus makan pada tabel kedua juga akan secara automatis terhapus data yang di delete. Penggunaan Perintah Delete pada Mysql adalah sebagai berikut:

DELIMITER $$
CREATE TRIGGER auto_delete BEFORE DELETE ON mahasiswa FOR EACH ROW
BEGIN
DELETE FROM mhs2 WHERE nim=OLD.nim;
DELETE FROM transfer WHERE nim=OLD.nim;
END;
$$ DELIMITER

HASIL PRAKTIKUM dan PERBEDAANNYA


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

Mysql

PostgreSQL
2)             Buatlah fungsi untuk mencari alamat mahasiswa dari tabel mahasiswa berdasarkan nama mahasiswa. Kemudian jalankan dengan perintah SELECT ! 
MySQL

PostgreSQL

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 !

MySQL

PostgreSQL


4)             Buatlah fungsi menggunakan pl/pgsql untuk mencari bilangan ganjil atau genap dari bilangan yang diinputkan. Kemudian jalankan dengan perintah SELECT !


MySQL

PostgreSQL

5)             Tambahkan kolom modifikasi pada tabel mahasiswa. Dimana setiap ada insert atau update maka tanggal pada kolom modifikasi akan menunjukkan tanggal perubahan tersebut dilakukan.


MySQL
Langkah- langkah pengerjaannya




PostgreSQL

KESIMPULAN
Fungsi dibuat agar query yang banyak dapat dibungkus dan dijalankan lebih efektif hingga menigkatkan kinerja database (tidak membutuhkan waktu yang lama dalam mengakses database)
PL/SQL merupakan procedural language yang dapat diisi banyak fungsi
Trigger adalah fungsi yang akan mengubah struktur tabel dalam penggunaan insert update dan delete

Subscribe to RSS Feed Follow me on Twitter!