by Abu Zubayr

Membuat CRUD dengan Statement dan ResultSet Java

Membuat CRUD dengan Statement dan ResultSet Java


Bismillah...

Pada tulisan ini saya akan memberikan tutorial bagaimana cara membuat fungsi CRUD (Create, Read, Update and Delete) pada bahasa pemrograman java. Sebelum anda mengikuti tutorial ini, saya sarankan untuk membaca artikel yang sebelumnya pernah saya tulis yaitu tentang Create, Alter dan Drop Table Database MySQL, karena pada tutorial ini saya menggunakan tabel tersebut.

Baiklah, sebelum membuat fungsi CRUD, terlebih dahulu kita harus membuat sebuah kelas yang digunakan untuk menghubungkan/mengkoneksikan antara database MySQL dengan aplikasi java yang kita buat. Untuk pembahasan lebih rinci mengenai koneksi ini sudah saya tulis pada tutorial Koneksi Database MySQL dengan Aplikasi Java. Anda bisa meng-copy paste kode tersebut dan kemudian tempatkan pada project yang akan anda gunakan untuk pembuatan aplikasi ini.

Untuk efektifitas, hapus kode bagian “ System.out.println("Koneksi berhasil !"); ”, sehingga terlihat 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;
    }
}

Untuk mempermudah proses penginputan data, kita buat terlebih dahulu kelas entitas yang memuat informasi seluruh field yang terdapat pada tabel “tb_mahasiswa”. Misalnya kelas entitas tersebut kita beri nama Mahasiswa.java, kemudian tempatkan kelas Mahasiswa.java sama dengan kelas KoneksiDB.java diatas.

Adapun isi dari kelas Mahasiswa.java adalah sebagai berikut.
package az.jdbc;

import java.util.Date;
enum Gender{L,P};

public class Mahasiswa {
    private String nim;
    private String nama;    
    private Gender gender;
    private String tempat_lahir;
    private java.util.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 Date getTgl_lahir() {
        return tgl_lahir;
    }

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

Selanjutnya buat sebuah kelas dengan nama BelajarCrud.java 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.Statement;// interface yang kita gunakan untuk mengeksekusi query
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)
    Method ini akan kita gunakan untuk menambahkan data ke tabel “tb_mahasiswa”. Adapun isi dari method ini adalah sebagai berikut.
    public void insert(Mahasiswa mhs) throws SQLException{
            String query = "insert into tb_mahasiswa values('"+mhs.getNim()+"', '"+mhs.getNama()+"', "
                    + "'"+mhs.getGender()+"', '"+mhs.getTempat_lahir()+"', '"+mhs.getTgl_lahir()+"')";
            
            Statement st = KoneksiDB.connect().createStatement();
            st.executeUpdate(query);
            st.close();
    }
    

    Method diatas merupakan method void dengan parameter kelas Mahasiswa. Kemudian variabel query dimasukkan perintah/query seperti biasa pada saat melakukan proses insert data ke tabel bersangkutan. Setiap value dari query yang dijalankan tersebut di wakili oleh method-method setter dan getter yang dibuat pada kelas Mahasiswa.java.

    Kemudian selanjutnya membuat sebuah statement melalui interface Statement berdasarkan kelas KoneksiDB.java. Dilanjutkan dengan memanggil method executeUpdate() untuk mengeksekusi query yang dibuat, dan terakhir menutup statement yang dibuat dengan memanggil method close().

  2. Method Read (Select data)
    Method ini merupakan method yang menjalankan query select. Dimana query tersebut digunakan untuk menampilkan data yang terdapat pada table di database. Pada tutorial ini saya membuat dua buah method untuk menangani proses pengambilan data. 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 = '"+nim+"'";
              Statement st = KoneksiDB.connect().createStatement();
              ResultSet rs = st.executeQuery(query);
              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"));
              }
              st.close();
              rs.close();
              
              return mhs;
      }
      

      Tipe method yang saya buat diatas memiliki return value atau nilai balik berupa kelas Mahasiswa. Pada method tersebut terdapat satu buah parameter nim. Parameter nim ini yang akan digunakan untuk memfilter data sehingga menghasilkan hanya satu baris saja pada saat query dijalankan. Hal demikian karena nim merupakan primary key dari tabel “tb_mahasiswa”.

      Seperti pada method insert, untuk membuat sebuah statement kita membutuhkan interface Statement yang selanjutnya diisi melalui kelas KoneksiDB.java. Setelah itu untuk menampilkan query select kita gunakan interface ResultSet kemudian isi interface tersebut dengan method executeQuery() yang berasal dari interface Statement sebelumnya.

      Kemudian dilanjutkan dengan memanggil method next() dari interface ResultSet. Perlu diperhatikan, jika hanya ingin menampilkan satu baris data saja cara yang lebih efektif adalah dengan menggunakan if bukan menggunakan while sekalipun bisa dilakukan.

      Selanjutnya isi masing-masing method yang ada pada kelas Mahasiswa dengan value yang didapat melalui query yang dijalankan tadi. Pada akhir kode tutup interface Statement dan ResultSet dengan memanggil method close(), dan tambahkan return value dari variabel kelas Mahasiswa.

    • 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";
              Statement st = KoneksiDB.connect().createStatement();
              ResultSet rs = st.executeQuery(query);
              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);
              }
              st.close();
              rs.close();
              
              return list;
      }
      

      Sama seperti method readOne() sebelumnya, hanya saja method ini return value atau nilai baliknya adalah berupa list/daftar seluruh mahasiswa yang terdapat pada tabel “tb_mahasiswa”.

  3. Method Update
    Method ini kita gunakan 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 = '"+mhs.getNim()+"', nama = '"+mhs.getNama()+"', "
                    + "gender = '"+mhs.getGender()+"', tempat_lahir = '"+mhs.getTempat_lahir()+"', "
                    + "tgl_lahir = '"+mhs.getTgl_lahir()+"' where nim = '"+nim_old+"'";
            
            Statement st = KoneksiDB.connect().createStatement();
            st.executeUpdate(query);
            st.close();
     }
    

    Method update yang dibuat diatas adalah jenis method void yang memiliki dua buah parameter. Parameter pertama berupa kelas Mahasiswa yang berisi tentang seluruh data mahasiswa yang akan diubah, kemudian parameter kedua merupakan nim mahasiswa sebelum dilakukan proses perubahan.

  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 = '"+nim+"'";
            Statement st = KoneksiDB.connect().createStatement();
            st.executeUpdate(query);
            st.close();
    }
    

    Pada method diatas terdapat parameter nim. Parameter tersebut digunakan sebagai rujukan data mana yang akan dihapus, mengingat nim adalah primary key dari tabel “tb_mahasiswa”.
Berikut adalah keseluruhan isi kode yang dibuat untuk proses CRUD pada aplikasi java.
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.Statement;// interface yang kita gunakan untuk mengeksekusi query
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 {
    
    public void insert(Mahasiswa mhs) throws SQLException{
        String query = "insert into tb_mahasiswa values('"+mhs.getNim()+"', '"+mhs.getNama()+"', "
                + "'"+mhs.getGender()+"', '"+mhs.getTempat_lahir()+"', '"+mhs.getTgl_lahir()+"')";
        
        Statement st = KoneksiDB.connect().createStatement();
        st.executeUpdate(query);
        st.close();
    }
    
    public Mahasiswa readOne(String nim) throws SQLException{
        Mahasiswa mhs = null;
        String query = "select * from tb_mahasiswa where nim = '"+nim+"'";
        Statement st = KoneksiDB.connect().createStatement();
        ResultSet rs = st.executeQuery(query);
        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"));
        }
        st.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";
        Statement st = KoneksiDB.connect().createStatement();
        ResultSet rs = st.executeQuery(query);
        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);
        }
        st.close();
        rs.close();
        
        return list;
    }
    
    public void update(Mahasiswa mhs, String nim_old) throws SQLException{
        String query = "update tb_mahasiswa set nim = '"+mhs.getNim()+"', nama = '"+mhs.getNama()+"', "
                + "gender = '"+mhs.getGender()+"', tempat_lahir = '"+mhs.getTempat_lahir()+"', "
                + "tgl_lahir = '"+mhs.getTgl_lahir()+"' where nim = '"+nim_old+"'";
        
        Statement st = KoneksiDB.connect().createStatement();
        st.executeUpdate(query);
        st.close();
    }
    
    public void delete(String nim) throws SQLException{
        String query = "delete from tb_mahasiswa where nim = '"+nim+"'";
        Statement st = KoneksiDB.connect().createStatement();
        st.executeUpdate(query);
        st.close();
    }
}

Untuk mencoba kode yang kita buat diatas, selanjutnya buat sebuah kelas TestCrud.java seperti berikut ini.
package az.jdbc;

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

public class TestCrud {
    public static void main(String[]args){
        BelajarCrud crud = new BelajarCrud();
        // 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 Statement dan ResultSet Java. Semoga bisa membantu anda untuk memahami proses CRUD pada bahasa pemrograman java. Pada tutorial selanjutnya saya akan membahas proses CRUD menggunakan PreparedStatement sebagai pengganti Statement yang kita gunakan sebelumnya.

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:

1 comment:

  1. Artikel yang bagus.
    Knp gak disimpan d github aja?
    Mantabs tuch

    ReplyDelete

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