Thursday 20 December 2012

Aplikasi CRUD Java - koneksi Java dan Mysql

Di malam yang sesunyi ini... aku sendiri... tiada yang menemani... akhirnya kini kusadari.... dia telah pergi... tinggalkan diriku.....:D ya inilah gan, keadaan ane sekarang... jomblo yg kece (Kecepian maksudnya)... tapi kecepian ini membawa suatu hikmah yg gak bisa di mengerti sama orang lain... banyak yg bilang kalo ane susah dapet pacar, sebenarnya si gak susah2 amat buat dptin cewek... emang si kali ini ane lagi suka sama salah satu cewek dikampus ane ya.. walopun beda jam tayang :D ... sehingga kita terpisah antara jarak dan waktu... tapi bukan itu masalah sebenarnya kenapa ane gak mau pacaran dulu kali ini... Banyak yg harus ane pikirin... mana lagi ane harus mikir tugas2 yg lagi numpuk, mikir kuliah yg terus2an nuntut ane buat blajar... dan satu hal yg paling bikin ane saat ini bener2 ogah sama yg namanya pacaran... ane kapok di akal2in sama cewek... kjadian yg lalu itu bnr2 memberikan plajaran yg besar buat ane untuk memahami bagaimana sebenarnya wanita itu.... tapi gak apa-apalah sehancur-hancurnya ane kmaren toh ane masi bisa hidup dan meraih prestasi yang belum ane raih sebelumnya...


udah dulu deh gan curcolnya :D ... pada postingan kali ini ane mau ngasi contoh program Aplikasi CRUD (Cread, Read, Update, Delete) Java dan Koneksi Java - Mysql

sebelumnya ente harus buat dulu database untuk manipulasi datanya, kalo gak ada databasenya pa yang mau di manipulasi ??? hehehee...
create database if not exists `kantor`;

USE `kantor`;

CREATE TABLE `pegawai` (
  `kodepegawai` int(3) NOT NULL,
  `namapegawai` varchar(50) DEFAULT NULL,
  `jeniskelamin` varchar(10) DEFAULT NULL,
  PRIMARY KEY (`kodepegawai`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

kemudian isi dengan beberapa data
insert  into `pegawai`(`kodepegawai`,`namapegawai`,`jeniskelamin`) values (1,'Untung Slamet','Pria'),(2,'Yanti Puspita','Wanita'),(3,'Joko Siswanto','Pria'); 
kalo udah sekarang ente harus menyediakan connector jdbc agar project java ente terhubung dengan database... Kalo ente pake netbeans versi 6 keatas (kalo gak salah) udah disediain Connector nya... sekarang ane kasi tau caranya import connectornya ke dalam project...
  • Click kanan pada folder Libreries, kemudian Click add Library....

  • Pilih Mysql JDBC Driver 


  • Kalo berhasil di folder Libreries akan ada file Mysql JDBC Driver - Mysql Connector


Setelah itu ente bikin desain Form kayak gini...

Komponen Form :
  1. Jtextfield Kode Pegawai
  2. Jtextfield Nama Pegawai
  3. JradioButton Pria
  4. JradioButton Wanita
  5. Buttongrup(untuk Jradiobutton pria dan wanita)
  6. Button Simpan
  7. Button Update
  8. Button Delete
  9. Button Cari
  10. Button Bersih
Sekarang ente tambahin kode-kode berikut diatas sendiri d bawahnya package *(sesuaikan dengan kode yang ada di project ente)

import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
import javax.swing.table.TableModel;  


Kemudian ente buat 2 Class... nanti ane jelasin kegunaan 2 Class ini... yang peting ente buat dulu 2 Class ini

Class yang pertama ente kasi nama L_Pegawai

public class L_Pegawai {
    private String kodepagawai,namapegawai,jeniskelamin;

    public void setKodePegawai(String kodepagawai){
        this.kodepagawai = kodepagawai;
    }

    public String getKodePegawai(){
        return this.kodepagawai;
    }

    public void setNamaPegawai(String namapegawai){
        this.namapegawai = namapegawai;
    }

    public String getNamaPegawai(){
        return this.namapegawai;
    }

    public void setJenisKelamin(String jeniskelamin){
        this.jeniskelamin = jeniskelamin;
    }

    public String getJenisKelamin(){
        return this.jeniskelamin;
    }
}

Class yang ke 2 ente kasi nama TmodelPegawai

import java.util.List;
import javax.swing.table.AbstractTableModel;

public class TmodelPegawai extends AbstractTableModel {
    private List<L_Pegawai> list;

    public TmodelPegawai(List<L_Pegawai> list) {
        this.list = list;
    }

    public int getRowCount() {
        return list.size();
    }

    public int getColumnCount() {
        return 3;
    }

    public Object getValueAt(int rowIndex, int columnIndex) {
        switch (columnIndex) {
            case 0:
                return list.get(rowIndex).getKodePegawai();
            case 1:
                return list.get(rowIndex).getNamaPegawai();
            case 2:
                return list.get(rowIndex).getJenisKelamin();
            default:
                return null;
        }
    }
    @Override
    public String getColumnName(int column) {
        switch (column) {
            case 0:
                return "Kode Pegawai";
            case 1:
                return "Nama Pegawai";
            case 2:
                return "Jenis Kelamin";
            default:
                return null;
        }
    }
}  
Fungsi dari 2 Class tersebut adalah sebagai object penampung data yang telah kita panggil dari database yang kita tampilkan pada Jtable... Coba nanti ente Analisa sendiri deh :D pokok nya bahasa gampangnya gitu...

Setelah itu ente tambahin beberapa Object yang akan membantu kita menghubungkan project kita dengan mysql di bawah Constructor... gak tau Construktor ??? kalo gak tau silahkan baca postingan ane yang membahas tentang dasar pemrograman Java, C# dan C++.... Tambahkan Beberapa object berikut

    private Connection koneksi;
    private ResultSet hasil;
    private Statement stat;
    private String query,url,database;
    private L_Pegawai pegawai;
    private List<l_pegawai&gt list;
    private TableModel model;
Kalo Udah Tambahkan kode barikut didalam Constructor...
        buttonGroup1.add(radiobutton_pria);
        buttonGroup1.add(radiobutton_wanita);
        try{
            database= "kantor";
            url = "jdbc:mysql://localhost:3306/"+database;
            Class.forName("com.mysql.jdbc.Driver");
            koneksi = DriverManager.getConnection(url, "root", "");            
        }catch(SQLException ex){
            JOptionPane.showMessageDialog(null, ex);
        }catch(ClassNotFoundException ex){
            JOptionPane.showMessageDialog(null, ex);
        }
Sekarang ente bangkitin semua event Action Performed pada semua button dan event WindowOpened... Ini kode yang ada pada WindowOpened
       try{
            query = "select * from pegawai";
            stat = koneksi.createStatement();
            hasil = stat.executeQuery(query);
            this._setModel(hasil);
            btn_simpan.setEnabled(true);
            btn_update.setEnabled(false);
            btn_delete.setEnabled(false);
            btn_bersih.setEnabled(false);
            btn_cari.setEnabled(true);
            text_kodepegawai.setText("");
            text_kodepegawai.setEnabled(true);
            text_kodepegawai.requestFocus();
            text_namapegawai.setText("");
            buttonGroup1.clearSelection();
        }catch(SQLException ex){
            JOptionPane.showMessageDialog(null, ex);
        }
Ini kode yang ada di event Action Performed Button Simpan
       try{
            String j_kelamin = "";
            if(radiobutton_pria.isSelected()){
                j_kelamin = "Pria";
            }else if(radiobutton_wanita.isSelected()){
                j_kelamin = "Wanita";
            }else{}

            if(text_kodepegawai.getText().equals("") && text_namapegawai.getText().equals("") || j_kelamin.equals("")){
                JOptionPane.showMessageDialog(null, "data Tidak lengkap");
            }else{
                query = "insert into pegawai values ('"+text_kodepegawai.getText()+"','"+text_namapegawai.getText()+"','"+j_kelamin+"')";
                stat = koneksi.createStatement();
                int res = stat.executeUpdate(query);
                if(res == 1){
                    JOptionPane.showMessageDialog(null, "Insert Data Sukses !");
                    formWindowOpened(null);
                }
            }
        }catch(SQLException ex){
            JOptionPane.showMessageDialog(null, ex);
        }

Ini kode yang ada di event Action Performed Button Cari
       try{
            String j_kelamin = "";
            if(text_kodepegawai.getText().equals("")){
                JOptionPane.showMessageDialog(null, "Tidak Ada data Yang Anda Pilih");
            }else{
                query = "select * from pegawai where kodepegawai = '"+text_kodepegawai.getText()+"'";
                stat = koneksi.createStatement();
                hasil = stat.executeQuery(query);                
                while(hasil.next()){
                    text_namapegawai.setText(hasil.getString("namapegawai"));
                    j_kelamin = hasil.getString("jeniskelamin");
                }

                if(j_kelamin.equals("")){
                    JOptionPane.showMessageDialog(null, "Data Yang Anda Pilih Tidak Ada di database");
                    formWindowOpened(null);
                }else{
                    if(j_kelamin.equals("Pria")){
                        radiobutton_pria.setSelected(true);
                    }else{
                        radiobutton_wanita.setSelected(true);
                    }
                    query = "select * from pegawai where kodepegawai = '"+text_kodepegawai.getText()+"'";
                    stat = koneksi.createStatement();
                    hasil = stat.executeQuery(query);
                    _setModel(hasil);
                    btn_simpan.setEnabled(false);
                    btn_update.setEnabled(true);
                    btn_delete.setEnabled(true);
                    btn_cari.setEnabled(false);
                    btn_bersih.setEnabled(true);
                    text_kodepegawai.setEnabled(false);
                }
            }
        }catch(SQLException ex){
            JOptionPane.showMessageDialog(null, ex);
        }
Ini kode yang ada di event Action Performed Button Bersih
        try{
            formWindowOpened(null);
        }catch(Exception ex){
            JOptionPane.showMessageDialog(null, ex);
        }
Tambahkan kode ini padaevent Action Performed Button Update
       try{
            String j_kelamin = "";
            if(radiobutton_pria.isSelected()){
                j_kelamin = "Pria";
            }else if(radiobutton_wanita.isSelected()){
                j_kelamin = "Wanita";
            }else{}
            query = "update pegawai set namapegawai = '"+text_namapegawai.getText()+"', jeniskelamin = '"+j_kelamin+"' where kodepegawai = '"+text_kodepegawai.getText()+"'";
            stat = koneksi.createStatement();
            int res = stat.executeUpdate(query);
            if(res == 1){
                JOptionPane.showMessageDialog(null, "Update Data Sukses !");
                formWindowOpened(null);
            }
        }catch(SQLException ex){
            JOptionPane.showMessageDialog(null, ex);
        }
Tambahkan kode ini pada event Action Performed Button Delete
try{
            if(JOptionPane.showConfirmDialog(null, "Anda Yakin menghapus Data ini ??","Warning",2) == JOptionPane.YES_OPTION){
                query = "delete from pegawai where kodepegawai = '"+text_kodepegawai.getText()+"'";
                stat = koneksi.createStatement();
                int res = stat.executeUpdate(query);
                if(res == 1){
                    JOptionPane.showMessageDialog(null, "Delete Data Sukses !");
                }
            }
            formWindowOpened(null);
        }catch(SQLException ex){
            JOptionPane.showMessageDialog(null, ex);
        }
Dan terakhir ente tambahin satu Function... function ini dibuat dengan tujuan menghemat kode program yang ditulis berulang kali, function ini berisi program yang akan menempatkan data yang telah kita panggil dari database dan di tempatkan pada 2 Class yang kita buat diawal tadi :D ... kalo diproject ini si gak terlalu terasa soalnya kan project sederhana... kalo nanti udah molai ke project yang agak Luas baru kerasa fungsinya Function ini...
    private void _setModel(ResultSet hasil)
    {
        try{
            list = new ArrayList&ltL_Pegawai&gt();
            while(hasil.next()){
                pegawai = new L_Pegawai();
                pegawai.setKodePegawai(hasil.getString("kodepegawai"));
                pegawai.setNamaPegawai(hasil.getString("namapegawai"));
                pegawai.setJenisKelamin(hasil.getString("jeniskelamin"));
                list.add(pegawai);
            }
            model = new TmodelPegawai(list);
            jTable1.setModel(model);
        }catch(SQLException ex){
            JOptionPane.showMessageDialog(null, ex);
        }

Oia ini demo dari Kode Program di Atas...







sekalian dulu ya Gan postingan yang ini... Pengunjung yang baik pasti meninggalkan jejak (Comment) :D... Oia ini project CRUD java nya kalo mau di download, silahkan download disini

6 comments:

  1. mantab om...berguna sekali buat bantu tugas kuliah

    ReplyDelete
    Replies
    1. oke gan... oia ini gan CRUD Java nya yang versi OOP.. mungkin berguna buat ente :D http://calonpresident.blogspot.com/2013/01/koneksi-java-jdbc-mysql-dengan-oop.html

      Delete
  2. gan bisa ga klo gini. kita sediakan 1 comcox dan 1 textfield.
    combobox trhubung dgn tbel diatas misalnya, maka tampil nama2 pegawai. setelah kita pilih nama pegawai otomatis muncul jenis kelminnya pria or wanita...
    postingan ini sngat membantu gan, tidak stngah2 kyk blog lain.. mksih byak gan... :)
    ps: delphi xe2 bisa kmren gan saya krena ada dbcomboboxnya

    ReplyDelete
    Replies
    1. bisa gan... tinggal setSelectedItem() nya saja gan..
      jadi misal kita sudah dapetin nilai jenis kelamin pegawai dari database, tinggal gini aja gan
      string jenis_kelamin = value; // dari database
      combobox1.setSelectedItem(jenis_kelamin)

      Delete
  3. Thaks gan ijin srupuuuuutttt

    ReplyDelete
  4. sip gan dah bisa berkat agan

    ReplyDelete