Sunday, November 30, 2014

Praktikum 9 Koneksi postgresql pada java (netBeans)

A. 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 engan 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.out.println(“Pesan Error : “ + e)

Berikut ini adalah daftar nama-nama driver dari beberapa database server yang sering
digunakan.




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

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  roperties  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 kelasprop.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”);
} catch (SQLException sqle) {
System.out.println(“Proses apabila koneksi gagal dilakukan”);
}
Berikut  ini  adalah  daftar  penulisan  URL  dari  beberapa  database  server  yang sering digunakan.



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

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. Hasil Praktikum
1. Membuat koneneksi postgtres dengan java netbeans
berikut kuerinya

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package prakdbd;
import java.sql.Connection;
import java.sql.DriverManager;
import javax.sql.*;
public class PrakDBD{
    Connection connection=null;
    void koneksi(){
        try{
            String connectionURL ="jdbc:postgresql://localhost/praktikumdbd";
            String username="postgres";
            String password="anang";
            connection=DriverManager.getConnection(connectionURL,username,password);
            System.err.println("koneksi berhasil");
        }
        catch (Exception e){
            System.err.println("koneksi gagal"+e);
            System.exit(1);
        }
    }
    public static void main(String[] args){
        PrakDBD kb=new PrakDBD();
        kb.koneksi();
    }
}

Gambarnya :



2. Membuat Tabel seperti berikut :


3. Membuat fungsi pada tombol simpan, edit, hapus, tampil, cari dan reset

Berikut adalah Querinya beserta Print skin hasil praktikum:

Void Simpan/Insert

 private void tsimpanActionPerformed(java.awt.event.ActionEvent evt) {                                        
        int a = Integer.parseInt(isinim.getText());
        String b = isinama.getText();
        String c = isialamat.getText();
        int d = Integer.parseInt((String) pilihkode.getSelectedItem());
        String e = "";
        if (lk.isSelected()) {
            e = lk.getText();
        } else {
            e = pr.getText();
        }
        
        try {
            Class.forName("org.postgresql.Driver");
            Connection connection = DriverManager.getConnection("jdbc:postgresql://localhost/praktikumdbd", 

"postgres", "anang");
            Statement statemen = connection.createStatement();
            String sql = "insert into mahasiswa values ('" + a + "','" + b + "','" + c + "','" + d + "','" + e + "')";
            statemen.executeUpdate(sql);
            statemen.close();
            JOptionPane.showMessageDialog(null, "data tersimpan");
        } catch (Exception f) {
            JOptionPane.showMessageDialog(null, "Nim sudah ada");
        }
    }        



hasil e





                               


Void Hapus

  int a = Integer.parseInt(isinim.getText());
        String b = isinama.getText();
        String c = isialamat.getText();
        int d = Integer.parseInt((String) pilihkode.getSelectedItem());
        String e = "";
        if (lk.isSelected()) {
            e = lk.getText();
        } else {
            e = pr.getText();
        }
        
        try {
            Class.forName("org.postgresql.Driver");
            Connection connection = DriverManager.getConnection("jdbc:postgresql://localhost/praktikumdbd", 

"postgres", "anang");
            Statement statemen = connection.createStatement();
            String sql = "delete from mahasiswa where nim='" + a + "'";
            statemen.executeUpdate(sql);
            statemen.close();
            JOptionPane.showMessageDialog(null, "data terhapus");
        } catch (Exception f) {
            JOptionPane.showMessageDialog(null, "Gagal");
        }        // TODO add your handling code here:
    }              




hasil e



                        


Void Edit/Update

 int a = Integer.parseInt(isinim.getText());
        String b = isinama.getText();
        String c = isialamat.getText();
        int d = Integer.parseInt((String) pilihkode.getSelectedItem());
        String e = "";
        if (lk.isSelected()) {
            e = lk.getText();
        } else {
            e = pr.getText();
        }
        
        try {
            Class.forName("org.postgresql.Driver");
            Connection connection = DriverManager.getConnection("jdbc:postgresql://localhost/praktikumdbd", 

"postgres", "anang");
            Statement statemen = connection.createStatement();
            String sql = "update mahasiswa set nama='" + b + "',alamat='" + c + "',id_fak'" + d + "',gender='" + e + 

"'where nim='" + a + "'";
            statemen.executeUpdate(sql);
            statemen.close();
            JOptionPane.showMessageDialog(null, "Berhasil di UPdate");
        } catch (Exception f) {
            JOptionPane.showMessageDialog(null, "Gagal");
        }        // TODO add your handling code here:
    }      








Void Tampil/select

  int a = Integer.parseInt(isinim.getText());
        String b = isinama.getText();
        String c = isialamat.getText();
        int d = Integer.parseInt((String) pilihkode.getSelectedItem());
        String e = "";
        if (lk.isSelected()) {
            e = lk.getText();
        } else {
            e = pr.getText();
        }
        
        try {
            Class.forName("org.postgresql.Driver");
            Connection connection = DriverManager.getConnection("jdbc:postgresql://localhost/praktikumdbd", 

"postgres", "anang");
            Statement statemen = connection.createStatement();
            String sql = "select * from mahasiswa  ";
            ResultSet rs = statemen.executeQuery(sql);
            while (rs.next()) {
                a = Integer.parseInt(rs.getString("nim"));
                b = rs.getString("nama");
                c = rs.getString("alamat");
                d = Integer.parseInt(rs.getString("id_fak"));
                e = rs.getString("gender");
                tampil.append(a + " " + b + " " + c + " " + d + " " + e + "\n");
            }
            statemen.close();
        } catch (Exception f) {
            JOptionPane.showMessageDialog(null, "gagal");
        }        // TODO add your handling code here:
    }                                









Void Reset

 private void tresetActionPerformed(java.awt.event.ActionEvent evt) {                                       
        isinim.setText("");
        isinama.setText("");
        isialamat.setText("");
        tampil.setText("");        // TODO add your handling code here:
    }     







Void Cari

int a = Integer.parseInt(isinim.getText());
        String b = isinama.getText();
        String c = isialamat.getText();
        int d = Integer.parseInt((String) pilihkode.getSelectedItem());
        String e = "";
        if (lk.isSelected()) {
            e = lk.getText();
        } else {
            e = pr.getText();
        }
        
        try {
            Class.forName("org.postgresql.Driver");
            Connection connection = DriverManager.getConnection("jdbc:postgresql://localhost/praktikumdbd", 

"postgres", "anang");
            Statement statemen = connection.createStatement();
            String sql = "select * from mahasiswa where nim = '"+a+"'";
           ResultSet isi = statemen.executeQuery(sql);
           while (isi.next()){
               isinim.setText(isi.getString("nim"));
               isinama.setText(isi.getString("nama"));
               isialamat.setText(isi.getString("alamat"));
              pilihkode.setSelectedItem(isi.getString("id_fak"));
            
               
           }
            statemen.close();
            //JOptionPane.showMessageDialog(null, "data tersimpan");
        } catch (Exception f) {
            JOptionPane.showMessageDialog(null, "Gagal");
        }       // TODO add your handling         // TODO add your handling code here:
            // TODO add your handling code here:
    }                       





                 
                             


4. Membuat seperti soal no 3 namun pada soal 4 ini koneksi ke postgresqlnya sedikit berbeda seperti berikut


Menambah Void koneksi

public class empat extends javax.swing.JFrame {

    PrakDBD k = new PrakDBD();



Void Simpan/Insert

 int a = Integer.parseInt(isinim.getText());
        String b = isinama.getText();
        String c = isialamat.getText();
        int d = Integer.parseInt((String) pilihkode.getSelectedItem());
        String e = "";
        if (lk.isSelected()) {
            e = lk.getText();
        } else {
            e = pr.getText();
        }

        try {
            Statement statemen = k.connection.createStatement();
            String sql = "insert into mahasiswa values ('" + a + "','" + b + "','" + c + "','" + d + "','" + e + "')";
            statemen.executeUpdate(sql);
            statemen.close();
            JOptionPane.showMessageDialog(null, "data tersimpan");
        } catch (Exception f) {
            JOptionPane.showMessageDialog(null, "Nim sudah ada");
        }
    }                            


hasil e





Void Hapus

  int a = Integer.parseInt(isinim.getText());
        String b = isinama.getText();
        String c = isialamat.getText();
        int d = Integer.parseInt((String) pilihkode.getSelectedItem());
        String e = "";
        if (lk.isSelected()) {
            e = lk.getText();
        } else {
            e = pr.getText();
        }

        try {
           Statement statemen = k.connection.createStatement();
            String sql = "delete from mahasiswa where nim='" + a + "'";
            statemen.executeUpdate(sql);
            statemen.close();
            JOptionPane.showMessageDialog(null, "data tersimpan");
        } catch (Exception f) {
            JOptionPane.showMessageDialog(null, "Nim sudah ada");
        }        // TODO add your handling code here:
    }     


hasil e


                                 




Void Edit/Update

 int a = Integer.parseInt(isinim.getText());
        String b = isinama.getText();
        String c = isialamat.getText();
        int d = Integer.parseInt((String) pilihkode.getSelectedItem());
        String e = "";
        if (lk.isSelected()) {
            e = lk.getText();
        } else {
            e = pr.getText();
        }

        try {
            Statement statemen = k.connection.createStatement();
            String sql = "update mahasiswa set nama='" + b + "',alamat='" + c + "',id_fak'" + d + "',gender='" + e + 

"'where nim='" + a + "')";
            statemen.executeUpdate(sql);
            statemen.close();
            JOptionPane.showMessageDialog(null, "data tersimpan");
        } catch (Exception f) {
            JOptionPane.showMessageDialog(null, "Nim sudah ada");
        }      






Void Select / Tampil

 int a = Integer.parseInt(isinim.getText());
        String b = isinama.getText();
        String c = isialamat.getText();
        int d = Integer.parseInt((String) pilihkode.getSelectedItem());
        String e = "";
        if (lk.isSelected()) {
            e = lk.getText();
        } else {
            e = pr.getText();
        }

        try {
            Statement statemen = k.connection.createStatement();
            String sql = "select * from mahasiswa  ";
            ResultSet rs = statemen.executeQuery(sql);
            while (rs.next()) {
                a = Integer.parseInt(rs.getString("nim"));
                b = rs.getString("nama");
                c = rs.getString("alamat");
                d = Integer.parseInt(rs.getString("id_fak"));
                e = rs.getString("gender");
                tampil.append(a + " " + b + " " + c + " " + d + " " + e + "\n");
            }
            statemen.close();
        } catch (Exception f) {
            JOptionPane.showMessageDialog(null, "gagal");
        }        


Void Reset


 private void tresetActionPerformed(java.awt.event.ActionEvent evt) {                                       
        isinim.setText("");
        isinama.setText("");
        isialamat.setText("");
        tampil.setText("");        // TODO add your handling code here:
    }                






Void Cari

   int a = Integer.parseInt(isinim.getText());
        String b = isinama.getText();
        String c = isialamat.getText();
        int d = Integer.parseInt((String) pilihkode.getSelectedItem());
        String e = "";
        if (lk.isSelected()) {
            e = lk.getText();
        } else {
            e = pr.getText();
        }

        try {
            Statement statemen = k.connection.createStatement();
            String sql = "select * from mahasiswa where nim = '" + a + "'";
            ResultSet isi = statemen.executeQuery(sql);
            while (isi.next()) {
                isinim.setText(isi.getString("nim"));
                isinama.setText(isi.getString("nama"));
                isialamat.setText(isi.getString("alamat"));
                pilihkode.setSelectedItem(isi.getString("id_fak"));
          

            }
            statemen.close();
            //JOptionPane.showMessageDialog(null, "data tersimpan");
        } catch (Exception f) {
            JOptionPane.showMessageDialog(null, "Gagal");
        }



C. PENUTUP

Maksud , Tujuan dan Manfaat

a. Maksud
- Pada bab kali ini akan membahas tentang koneksi PostgreSQL dengan bahasa pemrograman java.
- Selain hal itu akan dibahas juga mengenai kode pemrograman untuk manipulasi data.
b. Tujuan 
- Mahasiswa memahami dalam penggunaan Database PostgreSQL dan Bahasa pemrograman Java untuk membuat suatu program aplikasi.
c. Manfaat. 
 -Mahasiswa memahami dan mampu  menggunakan  database PostgreSQL dan       bahasa pemograman untuk membuat suatu program aplikasi dan  bisa bermanfaat untuk kehidupan.


D. Daftar Pustaka

Modul Praktikum Desain Basis Data 2014
Populer IlmuKomputer.Com  Copyright ©2003- 2006 IlmuKomputer.Com




0 comments:

Post a Comment