by Abu Zubayr

Membuat CRUD dengan PreparedStatement Java

Membuat CRUD dengan PreparedStatement Java
Bismillah...

Pada pembahasan sebelumnya saya sudah membahas tentang bagaimana cara membuat fungsi CRUD (Create, Read, Update and Delete) pada bahasa pemrograman java dengan menggunakan Statement. Jika anda belum membacanya silahkan buka materinya disini Membuat CRUD dengan Statement dan ResultSet Java.

Nah, melanjutkan tulisan tersebut saya akan kembali memberikan tutorial tentang pembuatan fungsi CRUD tetapi dengan menggunakan interface PreparedStatement.
Terdapat beberapa keuntungan jika kita menggunakan interface PreparedStatement dibandingkan dengan Statement, diantaranya adalah sebeagai berikut.
  1. Lebih mudah digunakan dibandingkan dengan Statement pada saat memberikan sebuah nilai pada field tertentu dengan hanya menambahkan tanda tanya (?) pada setiap parameter yang ada.
  2. Query yang dijalankan lebih aman (anti Sql Injection).
  3. Mempercepat proses eksekusi karena Instance dari PreparedStatement mengandung perintah SQL yang sudah terkompilasi.

Setelah mengetahui kelebihan dari penggunaan interface PreparedStatement ini, selanjutnya kita akan mempraktekkan cara penggunaannya pada proses CRUD.

Pertama buat kelas KoneksiDB.java terlebih dahulu seperti berikut ini.
package az.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class KoneksiDB {    
    public static String USERNAME = "root";// username yang digunakan untuk mengakses database tersebut
    public static String PASSWORD = "";// password yang digunakan untuk mengakses database tersebut. Jika tidak menggunakan password, kosongkan saja bagian tersebut
    public static int PORT = 3306;//port mysql
    public static String DATABASE = "akademik";// database yang akan dikoneksikan
    public static String IP_ADDRESS = "localhost";// ip address server MySQL. Jika dengan koneksi LAN atau internet ganti dengan nomor ip komputer server tempat dimana menginstal MySQL Server
    
    public static final Connection connect(){
        Connection con=null; // inisialisasi interface Connection
        try{
            Class.forName("com.mysql.jdbc.Driver");// load driver
            con=DriverManager.getConnection("jdbc:mysql://"+IP_ADDRESS+":"+PORT+"/"+DATABASE, 
                    USERNAME, PASSWORD);// menghubungkan database dengan method getConnection menggunakan atribut yang telah di definisikan diatas
        }
        catch(ClassNotFoundException | SQLException e){
            System.out.println("Koneksi Gagal !\n"+e.getMessage());
        }
        return con;
    }
}

Kemudian buat sebuah kelas entitas mahasiswa dengan nama Mahasiswa.java dan simpan pada package yang sama dengan kelas KoneksiDB.java diatas.
package az.jdbc;

enum Gender{L,P};

public class Mahasiswa {
    private String nim;
    private String nama;    
    private Gender gender;
    private String tempat_lahir;
    private java.sql.Date tgl_lahir;
    
    public String getNim() {
        return nim;
    }

    public void setNim(String nim) {
        this.nim = nim;
    }

    public String getNama() {
        return nama;
    }

    public void setNama(String nama) {
        this.nama = nama;
    }

    public Gender getGender() {
        return gender;
    }

    public void setGender(Gender gender) {
        this.gender = gender;
    }
    
    public String getTempat_lahir() {
        return tempat_lahir;
    }

    public void setTempat_lahir(String tempat_lahir) {
        this.tempat_lahir = tempat_lahir;
    }

    public java.sql.Date getTgl_lahir() {
        return tgl_lahir;
    }

    public void setTgl_lahir(java.sql.Date tgl_lahir) {
        this.tgl_lahir = tgl_lahir;
    }
}

Jika sudah, sekarang kita langsung saja membuat contoh dari pembuatan CRUD menggunakan PreparedStatement seperti berikut ini.

Buat sebuah kelas dengan nama BelajarCrud2.java misalnya pada project anda, dan tambahkan beberapa baris kode seperti berikut ini.
package az.jdbc;
import java.sql.ResultSet; // interface ResultSet yang digunakan untuk menampilkan record data/table
import java.sql.SQLException;// kelas Exception untuk penanganan kesalahan pada query yang dimasukkan
import java.sql.PreparedStatement;// interface yang kita gunakan untuk mengeksekusi query sebagai pengganti dari interface Statement
import java.util.ArrayList;// Array list yang digunakan untuk menampung seluruh data mahasiswa
import java.util.List;//interface dari kelas Collection yang selanjutnya akan digunakan bersama kelas ArrayList
public class BelajarCrud {
    
}

Kemudian kita akan membuat method-method yang diperlukan pada proses CRUD.
  1. Method Create (Insert data)
    public void insert(Mahasiswa mhs) throws SQLException{
            String query = "insert into tb_mahasiswa values(?,?,?,?,?)";
            
            PreparedStatement pr = KoneksiDB.connect().prepareStatement(query);
            pr.setString(1, mhs.getNim());
            pr.setString(2, mhs.getNama());
            pr.setString(3, mhs.getGender().toString());
            pr.setString(4, mhs.getTempat_lahir());
            pr.setDate(5, mhs.getTgl_lahir());
            pr.executeUpdate();
            pr.close();
    }
    

    Method diatas digunakan untuk proses penambahan data ke tabel “tb_mahasiswa”. Pada variabel query terlihat bahwa seluruh parameter tidak diisi langsung pada query tersebut, melainkan diikat oleh inteface PreparedStatement.

  2. Method Read (Select data)
    Method ini merupakan method yang digunakan untuk menampilkan data. Sama pada tutorial sebelumnya, untuk menampilkan data saya membuat dua buah method. Method pertama digunakan untuk menampilkan hanya 1 buah baris data, kemudian method yang kedua digunakan untuk menampilkan keseluruhan data.
    • Method dengan 1 buah baris data
      public Mahasiswa readOne(String nim) throws SQLException{
              Mahasiswa mhs = null;
              String query = "select * from tb_mahasiswa where nim = ?";
              PreparedStatement pr = KoneksiDB.connect().prepareStatement(query);
              pr.setString(1, nim);
              ResultSet rs = pr.executeQuery();
              if(rs.next()){
                  mhs = new Mahasiswa();
                  mhs.setNim(rs.getString("nim"));
                  mhs.setNama(rs.getString("nama"));
                  mhs.setGender(rs.getString("gender").equals("L")?Gender.L:Gender.P);
                  mhs.setTempat_lahir(rs.getString("tempat_lahir"));
                  mhs.setTgl_lahir(rs.getDate("tgl_lahir"));
              }
              pr.close();
              rs.close();
              
              return mhs;
      }
      

    • Method dengan seluruh baris data
      public List readAll() throws SQLException{
              List list = new ArrayList<>();
              Mahasiswa mhs;
              String query = "select * from tb_mahasiswa order by nim";
              PreparedStatement pr = KoneksiDB.connect().prepareStatement(query);
              ResultSet rs = pr.executeQuery();
              while(rs.next()){
                  mhs = new Mahasiswa();
                  mhs.setNim(rs.getString("nim"));
                  mhs.setNama(rs.getString("nama"));
                  mhs.setGender(rs.getString("gender").equals("L")?Gender.L:Gender.P);
                  mhs.setTempat_lahir(rs.getString("tempat_lahir"));
                  mhs.setTgl_lahir(rs.getDate("tgl_lahir"));
                  
                  list.add(mhs);
              }
              pr.close();
              rs.close();
              
              return list;
      }
      

  3. Method Update
    Method ini digunakan untuk melakukan proses perubahan data pada sebuah tabel. Isi dari method update ini adalah sebagai berikut.
    public void update(Mahasiswa mhs, String nim_old) throws SQLException{
            String query = "update tb_mahasiswa set nim = ?, nama = ?, gender = ?, tempat_lahir = ?, "
                    + "tgl_lahir = ? where nim = ?";
            
            PreparedStatement pr = KoneksiDB.connect().prepareStatement(query);
            pr.setString(1, mhs.getNim());
            pr.setString(2, mhs.getNama());
            pr.setString(3, mhs.getGender().toString());
            pr.setString(4, mhs.getTempat_lahir());
            pr.setDate(5, mhs.getTgl_lahir());
            pr.setString(6, nim_old);
            pr.executeUpdate();
            pr.close();
    }
    

  4. Method Delete
    Method delete digunakan untuk menghapus baris data yang terdapat pada tabel. Isi dari method delete ini adalah seperti berikut.
    public void delete(String nim) throws SQLException{
            String query = "delete from tb_mahasiswa where nim = ?";
            PreparedStatement pr = KoneksiDB.connect().prepareStatement(query);
            pr.setString(1, nim);
            pr.executeUpdate();
            pr.close();
     }
    

Berikut adalah keseluruhan isi kode yang dibuat untuk proses CRUD menggunakan interface PreparedStatement.
package az.jdbc;
import java.sql.ResultSet; // interface ResultSet yang digunakan untuk menampilkan record data/table
import java.sql.SQLException;// kelas Exception untuk penanganan kesalahan pada query yang dimasukkan
import java.sql.PreparedStatement;// interface yang kita gunakan untuk mengeksekusi query sebagai pengganti interface Statement
import java.util.ArrayList;// Array list yang digunakan untuk menampung seluruh data mahasiswa
import java.util.List;//interface dari kelas Collection yang selanjutnya akan digunakan bersama kelas ArrayList

public class BelajarCrud2 {
    
    public void insert(Mahasiswa mhs) throws SQLException{
        String query = "insert into tb_mahasiswa values(?,?,?,?,?)";
        
        PreparedStatement pr = KoneksiDB.connect().prepareStatement(query);
        pr.setString(1, mhs.getNim());
        pr.setString(2, mhs.getNama());
        pr.setString(3, mhs.getGender().toString());
        pr.setString(4, mhs.getTempat_lahir());
        pr.setDate(5, mhs.getTgl_lahir());
        pr.executeUpdate();
        pr.close();
    }
    
    public Mahasiswa readOne(String nim) throws SQLException{
        Mahasiswa mhs = null;
        String query = "select * from tb_mahasiswa where nim = ?";
        PreparedStatement pr = KoneksiDB.connect().prepareStatement(query);
        pr.setString(1, nim);
        ResultSet rs = pr.executeQuery();
        if(rs.next()){
            mhs = new Mahasiswa();
            mhs.setNim(rs.getString("nim"));
            mhs.setNama(rs.getString("nama"));
            mhs.setGender(rs.getString("gender").equals("L")?Gender.L:Gender.P);
            mhs.setTempat_lahir(rs.getString("tempat_lahir"));
            mhs.setTgl_lahir(rs.getDate("tgl_lahir"));
        }
        pr.close();
        rs.close();
        
        return mhs;
    }
    
    public List readAll() throws SQLException{
        List list = new ArrayList<>();
        Mahasiswa mhs;
        String query = "select * from tb_mahasiswa order by nim";
        PreparedStatement pr = KoneksiDB.connect().prepareStatement(query);
        ResultSet rs = pr.executeQuery();
        while(rs.next()){
            mhs = new Mahasiswa();
            mhs.setNim(rs.getString("nim"));
            mhs.setNama(rs.getString("nama"));
            mhs.setGender(rs.getString("gender").equals("L")?Gender.L:Gender.P);
            mhs.setTempat_lahir(rs.getString("tempat_lahir"));
            mhs.setTgl_lahir(rs.getDate("tgl_lahir"));
            
            list.add(mhs);
        }
        pr.close();
        rs.close();
        
        return list;
    }
    
    public void update(Mahasiswa mhs, String nim_old) throws SQLException{
        String query = "update tb_mahasiswa set nim = ?, nama = ?, gender = ?, tempat_lahir = ?, "
                + "tgl_lahir = ? where nim = ?";
        
        PreparedStatement pr = KoneksiDB.connect().prepareStatement(query);
        pr.setString(1, mhs.getNim());
        pr.setString(2, mhs.getNama());
        pr.setString(3, mhs.getGender().toString());
        pr.setString(4, mhs.getTempat_lahir());
        pr.setDate(5, mhs.getTgl_lahir());
        pr.setString(6, nim_old);
        pr.executeUpdate();
        pr.close();
    }
    
    public void delete(String nim) throws SQLException{
        String query = "delete from tb_mahasiswa where nim = ?";
        PreparedStatement pr = KoneksiDB.connect().prepareStatement(query);
        pr.setString(1, nim);
        pr.executeUpdate();
        pr.close();
    }
}

Untuk mencoba kode yang kita telah dibuat diatas, buat sebuah kelas TestCrud2.java seperti berikut ini.
package az.jdbc;

import java.sql.SQLException;
import java.util.Calendar;
import java.util.List;

public class TestCrud2 {
    public static void main(String[]args){
        BelajarCrud2 crud = new BelajarCrud2();
        // insert data
        Mahasiswa mhs = new Mahasiswa();
        mhs.setNim("11015513");
        mhs.setNama("Farhana");
        mhs.setGender(Gender.P);
        mhs.setTempat_lahir("Daik Lingga");
        Calendar cal = Calendar.getInstance();
        cal.set(1994, 7, 18);
        mhs.setTgl_lahir(new java.sql.Date(cal.getTime().getTime()));
        
        System.out.println("melakukan proses penambahan data...");
        try {
            crud.insert(mhs);// memanggil method insert()
            System.out.println("proses penambahan data berhasil dilakukan !");
        } catch (SQLException ex) {
            System.out.println("gagal melakukan proses penambahan data\n"+ex.getMessage());
        }
        
        try {
            Mahasiswa mhs_one = crud.readOne("11015510");// memanggil method readOne()
            System.out.println("menampilkan mahasiswa dengan method readOne()");
            System.out.println("Nim\t\t: "+mhs_one.getNim());
            System.out.println("Nama\t\t: "+mhs_one.getNama());
            System.out.println("Gender\t\t: "+mhs_one.getGender());
            System.out.println("Tempat Lahir\t: "+mhs_one.getTempat_lahir());
            System.out.println("Tanggal Lahir\t: "+mhs_one.getTgl_lahir());
        } catch (SQLException ex) {
            System.out.println("gagal menampilkan data dengan method readOne() !\n"+ex.getMessage());
        }
        
        System.out.println("\n=====================================================");
        System.out.println("menampilkan mahasiswa dengan method readAll()");
        try {
            List mhs_all = crud.readAll();// memanggil method readAll()
            for(Mahasiswa mhs_n:mhs_all){
                System.out.println("Nim\t\t: "+mhs_n.getNim());
                System.out.println("Nama\t\t: "+mhs_n.getNama());
                System.out.println("Gender\t\t: "+mhs_n.getGender());
                System.out.println("Tempat Lahir\t: "+mhs_n.getTempat_lahir());
                System.out.println("Tanggal Lahir\t: "+mhs_n.getTgl_lahir());
                System.out.println("-----------------------------------------------");
            }
        } catch (SQLException ex) {
            System.out.println("gagal menampilkan data dengan method readAll() !\n"+ex.getMessage());
        }
        
        System.out.println("\n=====================================================");
        System.out.println("melakukan proses perubahan data...");
        //proses update/perubahan data mahasiswa
        try {
            Mahasiswa mhs_update = crud.readOne("11015513");// memanggil method readOne(); terlebih dahulu sebelum melakukan perubahan data agar data yang tak perlu diubah tidak ikut berubah pada saat query dijalankan
            mhs_update.setNim("11015514");// nim baru
            mhs_update.setNama("Farhana");// nama baru
            mhs_update.setTempat_lahir("Tanjungpinang"); // tempat lahir baru
            cal.set(1994, 7, 20);// tanggal lahir baru
            mhs_update.setTgl_lahir(new java.sql.Date(cal.getTime().getTime()));
            crud.update(mhs_update, "11015513");// memanggil method update();
            System.out.println("proses perubahan data berhasil dilakukan !\nberikut adalah data mahasiswa yang baru diubah");
            
            Mahasiswa mhs_one = crud.readOne("11015514");//nim baru
            System.out.println("Nim\t\t: "+mhs_one.getNim());
            System.out.println("Nama\t\t: "+mhs_one.getNama());
            System.out.println("Gender\t\t: "+mhs_one.getGender());
            System.out.println("Tempat Lahir\t: "+mhs_one.getTempat_lahir());
            System.out.println("Tanggal Lahir\t: "+mhs_one.getTgl_lahir());
        } catch (SQLException ex) {
            System.out.println("gagal melakukan proses penambahan data\n"+ex.getMessage());
        }
        
        System.out.println("\n=====================================================");
        System.out.println("melakukan proses penghapusan data...");
        try {
            crud.delete("11015514");// memanggil method delete();
            System.out.println("proses penghapusan data berhasil dilakukan !\nberikut daftar seluruh data mahasiswa yang ada");
            List mhs_all = crud.readAll();
            for(Mahasiswa mhs_n:mhs_all){
                System.out.println("Nim\t\t: "+mhs_n.getNim());
                System.out.println("Nama\t\t: "+mhs_n.getNama());
                System.out.println("Gender\t\t: "+mhs_n.getGender());
                System.out.println("Tempat Lahir\t: "+mhs_n.getTempat_lahir());
                System.out.println("Tanggal Lahir\t: "+mhs_n.getTgl_lahir());
                System.out.println("-----------------------------------------------");
            }
        } catch (SQLException ex) {
            System.out.println("gagal melakukan proses penghapusan data\n"+ex.getMessage());
        }
    }
}

Demikianlah tutorial Membuat CRUD dengan PreparedStatement Java. Semoga bisa membantu anda untuk memahami proses CRUD pada bahasa pemrograman java menggunakan interface PreparedStatement.

Untuk terus meng-update artikel yang kami posting dari website ini anda bisa mengisi email melalui isian Follow by Email dibawah.

Terima kasih... wassalam
loading...
Share:

0 Comments:

Post a Comment

DigitalOcean Referral Badge
www.domainesia.com
Powered by Blogger.