BLANTERORBITv102

    Cara Membuat Aplikasi CRUD Dengan Java di Netbeans

    Sabtu, 03 Oktober 2015
    Kali ini saya akan membuat tutorial aplikasi sederhana yang dimana didalamnya terdapat proses Create , Read , Update dan Delete. Sebut saja aplikasi yang akan kita buat adalah buku telephone yang berbasis desktop. Jalankan / start apache dan mysql di xampp , kemudian buka PhpMyAdmin dan buatlah sebuah database. Untuk tutorial membuat database bisa buka link berikut :: Tutorial Database dengan PhpMyAdmin :: .

    Buat sebuah project netbeans dengan nama project kontakTelepon, kemudian akan tampil main class KontakTelepon.java. Pada class ini kita akan ganti , sehingga tidak merupakan main class dari project kita. Class ini akan berisi konektor/penghubung program ke database. Untuk membuat koneksi database anda dapat melihat postingan sebelumnya tentang :: Program Koneksi Database di MySQL :: , sehingga saya tidak perlu menjelaskan kembali untuk koneksi. Berikut kode program untuk koneksi databasenya pada class KontakTelepon.java.
    
    /*
     * java-sc.blogspot.com
     * Hady Eka Saputra <jsc>
     */
    package kontaktelepon;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import javax.swing.JOptionPane;
    /**
     *
     * @author jsc
     */
    public class KontakTelepon {
        Connection conn = null;
        public static Connection koneksi() {
            String driver = "com.mysql.jdbc.Driver";
            String _host = "jdbc:mysql://localhost/jsc-phoneBook";
            String _user = "root";
            String _pass = "";       
            try {
                Class.forName(driver);
                Connection conn = DriverManager.getConnection(_host , _user ,_pass);
                return conn;
            }
            catch (ClassNotFoundException | SQLException e){
                JOptionPane.showMessageDialog(null,e);
            } 
            return null;
        }
    } 
    


    Tambah new JFrame Form kedalam package project yang kita buat. Lalu desain JFrame utama seperti gambar berikut. Tutorial video ada di bagian bawah postingan.
    Gambar 1 - Membuat Aplikasi CRUD Dengan Java di Netbeans
    Gambar 1

    Adapun komponen yang kita gunakan untuk membuat Form utama aplikasi buku telpon yaitu diantaranya adalah :
    KomponenVariabel / namaFungsi
    JFrameformDataMerupakan form utama dari aplikasi buku telepon
    jPanel1jPanel1Merupakan Panel untuk meletakan komponen jlabel exit, minimize dan title dari aplikasi
    jLabel1titleMerupakan label nama aplikasi
    jLabel2minimizeMerupakan label untuk meminimize jFrame
    jLabel3exitMerupakan label untuk keluar dari aplikasi
    jPanel2jPanel2Panel yang digunakan untuk meletakan komponen label tambah, edit d, hapus dan table data
    jLabel4addKontakLabel yang berguna untuk membuka new frame
    jLabel5editKontakLabel yang berguna untuk membuka frame edit kontak
    jLabel6hapusKontakLabel yang berguna untuk menghapus data pada database
    jScrollPane1jScrollPane1Panel scroller yang secara otomatis ada pada tabel
    jTable1readDataTabel yang berguna untuk menampilkan data dari database

    Untuk setiap membuat action Event mouse click dengan cara klik kanan komponen , pilih events pilih  mouse dan klik mouseClicked.
    Buat actionEvent pada label exit , hapus komentar pada diantara block tersebut dan ganti dengan kode dibawah , sehingga akan tampil seperti ini.
    private void exitMouseClicked(java.awt.event.MouseEvent evt) {      
            System.exit(0);
    } 
    

    Buat event mouseClicked pada label minimize dan salin kode program dibawah.
    
    
    private void minimizeMouseClicked(java.awt.event.MouseEvent evt) {        
            this.setState(formData.ICONIFIED);
    }
    

    Buat new frame lagi , dengan nama frame adalah tambah dan edit, untuk tampilan kedua frame bisa lihat gambar dibawah ini.


    Gambar 2 - Membuat Aplikasi CRUD Dengan Java di Netbeans
    Gambar 2

    Gambar 3 - Membuat Aplikasi CRUD Dengan Java di Netbeans
    Gambar 3

    Adapun komponen yang kita gunakan adalah, sebagai berikut :

    KomponenVariabelFungsi
    JFrameJFrameMeletakan semua komponen
    JPanel1jPanel1Meletakan komponen jlabel
    jLabelDibuat sesuai dengan fungsinyajLabel digunakan untuk membuat label dari inputan, dan digunakan untuk tombol ubah/tmbah dan batal
    jTextFieldDibuat sesuai kelompoknyaDigunakan untuk tempan penginputan string

    Kembali pada formData , beri event mouseClicked pada label tambah data untuk membuka frame tambah. Lihat kode program di bawah.
        private void addKontakMouseClicked(java.awt.event.MouseEvent evt) {                                 
            tambah f1 = new tambah();
            f1.setVisible(true);
            this.setVisible(false);
        }
    Lakukan juga pada label edit data , dengan kode program seperti berikut.
        private void editontakMouseClicked(java.awt.event.MouseEvent evt) {                                       
            tambah fE = new tambah();
            fE.setVisible(true);
            this.setVisible(false);
        } 

    Tetap pada bagian source , sekarang kita membuat method untuk menampilkan data pada database ke tabel. Tambahkan kode berikut tepat dibawah,
    public class formData extends javax.swing.JFrame {

    sehingga  akan tampil seperti ini.
    public class formData extends javax.swing.JFrame {
        Connection conn = null;
        ResultSet res = null;
        PreparedStatement pst = null;
        /**
         * Creates new form formData
         */.................................. kode seterusnya! 
    

    Selanjutnya pada bagian bawahnya terdapat kode program ,
    public formData() {        initComponents();  }

    Tepat dibawah initComponents(); tambahkan parameter untuk memanggil method koneksi dari class koneksi sehingga kurang lebih akan menjadi seperti ini.
        public formData() {
            initComponents();
            conn = KontakTelepon.koneksi();
        }

    Barulah kemudian kita membuat method tampil data, kode program diletakan dibawah block (}) kode diatas, berikut kode programnya.
        private void dataTable(){
            try {
                String bacaSemuaData = "SELECT no as 'No', nama as 'Nama', nope as 'Telephone', email as 'E-Mail', bbm as 'Pin BBM', line as 'Id Line', other as 'Other' FROM alldata";
                pst = conn.prepareStatement(bacaSemuaData);
                res = pst.executeQuery();
                readData.setModel(DbUtils.resultSetToTableModel(res));
            }
            catch (Exception e){
                JOptionPane.showMessageDialog(null, e);
            }
        }

    Untuk database anda bisa mengikuti data yang saya berikan ataupun membuat sendiri. Selanjutnya panggil method dataTable() di bawah
    conn = KontakTelepon.koneksi();
    sehingga pada block formData() saat ini menjadi,
        public formData() {
            initComponents();
            conn = KontakTelepon.koneksi();
            dataTable();
        }

    Ketika kita run belum ada data yang tampil karena data masih kosong pada database , untuk menguji coba silahkan tambah satu atau lebih data melalui PhpMyAdmin kemudian running kembali.

    Selanjutnya kita akan membuat form penginputan database yang terdapat pada frame tambah. Sebelum ke proses input, terlebih dahulu kita memberi interface Conncetion , ResultSet, dan PreparedStatement. Interface ini diletakan dibawah public class tambah extends javax.swing.JFrame , sama seperti pada frame formData.
    
    
    public class tambah extends javax.swing.JFrame {
        Connection conn = null;
        ResultSet res = null;
        PreparedStatement pst = null;
    

    Kemudian bangun koneksi ke database, perhatikan kode berikut.
    
        public tambah() {
            initComponents();
            conn = KontakTelepon.koneksi();
        }
    

    Selanjutnya kita akan membuat autonumber , autonumber sendiri digunakan agar mempermudah pemberian nomor. Terutama id / nomor yang bertipe data integer biasanya digunakan sebagai primary key. Namun ini hanya berfungsi untuk data yang terurut saja. Berikut method untuk menggunakan autonumber / penomoran otomatis pada form tambah.
    
        private void autonumber(){
            try {
                String an = "SELECT MAX(no) FROM alldata";
                pst = conn.prepareStatement(an);
                res = pst.executeQuery();
                if (res.next()){
                    int a = res.getInt(1);
                    add_no.setText(Integer.toString(a+1));
                }
                res.close();
                pst.close();
            }
            catch (Exception e){
                JOptionPane.showMessageDialog(null, e);
            }
        } 
    

    Setelah itu panggil method autonumber() , tepat dibawah koneksi.
    
        public tambah() {
            initComponents();
            conn = KontakTelepon.koneksi();
            autonumber();
        }
    

    Coba di run frame tambah , kemudian pada no akan tampil angka satu dimana sebelumnya tidak ada data di database. Dan secara otomatis akan bernilai satu, apabila ada data sebelumnya maka akan bertambah kelipatan satu.
    Gambar 4 - Membuat Aplikasi CRUD Dengan Java di Netbeans
    Gambar 4

    Buatlah events mouseClicked pada label tambah , pada bagian sourcenya isi dengan kode program dibawah.
    
        private void tambahMouseClicked(java.awt.event.MouseEvent evt) {                                    
            String nama = add_Nama.getText();
            String hp = add_Hp.getText();
            String mail = add_Mail.getText();
            String bbm = add_Bbm.getText();
            String line = add_Line.getText();
            String other = add_Other.getText();
            
            String queryTambah = "INSERT INTO alldata(no, nama, nope, email, bbm, line, other) "
                    + "VALUES (?,?,?,?,?,?,?)";
            try {
                pst = conn.prepareStatement(queryTambah);
                pst.setString(1, add_no.getText());
                pst.setString(2, nama);
                pst.setString(3, hp);
                pst.setString(4, mail);
                pst.setString(5, bbm);
                pst.setString(6, line);
                pst.setString(7, other);
                if (nama.isEmpty() || hp.isEmpty() || mail.isEmpty()){
                    JOptionPane.showMessageDialog(null, "Form Nama , HP dan E-Mail masih kosong");
                }
                else {
                    pst.execute();
                    JOptionPane.showMessageDialog(null, "Data Tersimpan !");
                    add_Nama.setText(null);
                    add_Hp.setText(null);
                    add_Mail.setText(null);
                    add_Bbm.setText(null);
                    add_Line.setText(null);
                    add_Other.setText(null);
                    autonumber();
                }
            }
            catch (SQLException | HeadlessException e){ 
                JOptionPane.showMessageDialog(null, e);
            }
        }
    

    Silahkan coba running frame tambah , maka hasilnya akan seperti gambar dibawah.
    Gambar 5 - Membuat Aplikasi CRUD Dengan Java di Netbeans
    Gambar 5

    Pada tombol batal , silahkan beri event mouseClicked dan isi dengan kode program dibawah.
    
        private void batalMouseClicked(java.awt.event.MouseEvent evt) {                                   
            formData f1 = new formData();
            f1.setVisible(true);
            this.dispose();
        }
    

    Maka jika kita klik batal, akan kembali ke frame awal. Pada frame awal juga akan tampil data di tabel yang telah saya inputkan sebagai contoh tadi.
    Gambar 6 - Membuat Aplikasi CRUD Dengan Java di Netbeans
    Gambar 6

    Kembali ke frame formData , kita akan memberikan proses edit data pada data yang sudah ada di database. Pada kesempatan contoh program ini saya juga akan menerapkan pengiriman data dari frame satu ke frame lainnya. Silahkan simak dengan seksama kode program yang saya berikan.

    Pada label editKontak , ganti kode program sebelumnya dengan kode program dibawah.
    
        private void editontakMouseClicked(java.awt.event.MouseEvent evt) {                                      
            edit fE = new edit();
            fE.fD = this;
            fE.setVisible(true);
            this.setVisible(false);
            int tabelData = readData.getSelectedRow();
            fE.ambilNo = (readData.getValueAt(tabelData, 0).toString());
            fE.ambilNama = (readData.getValueAt(tabelData, 1).toString());
            fE.ambilNope = (readData.getValueAt(tabelData, 2).toString());
            fE.ambilMail = (readData.getValueAt(tabelData, 3).toString());
            fE.ambilPin = (readData.getValueAt(tabelData, 4).toString());
            fE.ambilLine = (readData.getValueAt(tabelData, 5).toString());
            fE.ambilOther = (readData.getValueAt(tabelData, 6).toString());
            fE.dataTampil();
        } 
    

    Kemudian kita beralih ke frame edit, seperti biasa , tambah interface Connection , ResultSet , PreparedStatement dan koneksi pada frame edit. Pada bagian source lakukan pendeklarasian variabel sesuai dengan jumlah data (kolom) yang ada pada database. Letakan kode berikut di bawah method autonumber() pada frame formData.
    
        public String ambilNo ,ambilNama , ambilNope , ambilMail , ambilPin , ambilLine , ambilOther;
            public String getambilNo(){
                return ambilNo;
            }
            public String getambilNama(){
                return ambilNama;
            }
            public String getambilNope(){
                return ambilNope;
            }
            public String getambilMail(){
                return ambilMail;
            }
            public String getambilPin(){
                return ambilPin;
            }
            public String getambilLine(){
                return ambilLine;
            }
            public String getambilOther(){
                return ambilOther;
            } 
    

    Tepat dibawahnya tambah method untuk menampilkan data yang di panggil ke textField pada frame edit. Berikut kode program method dataTampil().
    
         public void dataTampil(){
            edit_no.setText(ambilNo);
            edit_Nama.setText(ambilNama);
            edit_Hp.setText(ambilNope);
            edit_Mail.setText(ambilMail);
            edit_Bbm.setText(ambilPin);
            edit_Line.setText(ambilLine);
            edit_Other.setText(ambilOther);
        }
    

    Panggil method dataTampil() dibawah autonumber() , perhatikan kode program dibawah.
    
        public edit() {
            initComponents();
            conn = KontakTelepon.koneksi();
            autonumber();
            dataTampil();
        }
    

    Beri events mouseClicked pada label ubah, kemudian ketikan kode program untuk update database dibawah ini.
    
        private void ubahMouseClicked(java.awt.event.MouseEvent evt) {                                  
            String no = edit_no.getText();
            String nama = edit_Nama.getText();
            String hp = edit_Hp.getText();
            String mail = edit_Mail.getText();
            String bbm = edit_Bbm.getText();
            String line = edit_Line.getText();
            String other = edit_Other.getText();
            String queryUpdate = "UPDATE alldata SET nama='"+nama+"',nope='"+hp+"',"
                    + "email='"+mail+"',bbm='"+bbm+"',line='"+line+"',other='"+other+"' WHERE no='"+no+"'";
            try {
                pst = conn.prepareStatement(queryUpdate);
                pst.execute();
                JOptionPane.showMessageDialog(null, "Berhasil di update");
            }
            catch (SQLException | HeadlessException e){
                JOptionPane.showMessageDialog(null, e);
            }
        } 
    

    Untuk uji coba silahkan running kembali frame utama kemudian klik salah satu baris, perhatikan contoh pada gambar dibawah ini.
    Gambar 7 - Membuat Aplikasi CRUD Dengan Java di Netbeans
    Gambar 7
    Terakhir adalah memberi event pada label hapus, silahkan beri event mouseClicked dan beri kode program seperti dibawah ini.
    
    
        private void hapusKontakMouseClicked(java.awt.event.MouseEvent evt) {                                         
            String queryDelete = "DELETE FROM alldata WHERE no=?";
            int tabelData = readData.getSelectedRow();
            try {
                pst = conn.prepareStatement(queryDelete);
                pst.setString(1, readData.getValueAt(tabelData, 0).toString());
                pst.execute();
                JOptionPane.showMessageDialog(null, "Haous");
            }
            catch (SQLException | HeadlessException e){
                JOptionPane.showMessageDialog(null, e);
            }
            dataTable();
        } 
    

    Untuk menghapus data, klik terlebih dahulu data yang akan dihapus kemudian klik tombol hapus , perhatikan gambar dibawah.
    Gambar 8 - Membuat Aplikasi CRUD Dengan Java di Netbeans
    Gambar 8
    Berikut Video tutorial untuk membuat UI pada aplikasi ini.

    Sebelumnya saya mohon maaf apabila ada kesalahan pengetikan, atau ada kerancuan kata. Jika hal itu terjadi maka silahkan menanggapi melalui komentar dan kita berdiskusi mengenai contoh program yang saya buat ini.

    Terimakasih sudah berkesempatan untuk menimba ilmu dari blog JSC, semoga ilmu yang di share dapat bermanfaat. Jika ada pertanyaan mengenai ilmu yang terkait ataupun tidak, mari kita berdiskusi di dalam kolom komentar ini.

    Keep Learning and Keep Sharing

    1. Bagus sekali mau berbagi ilmu Gan,

      BalasHapus
    2. bagus gan.. membantu sekali buat newbie

      BalasHapus
    3. saya baru coba , tapi kok pas dibagian Dbutils nya cannot find symbol ya gan?

      BalasHapus
      Balasan
      1. ada salah pengetikan pada baris tersebut mas..

        Hapus
      2. Saya mau coba baut lagi semoga nanti siang selesai

        Hapus
      3. jangan lupa librarynya di import ya mas, dan penggunaan variabel jug mesti di perhatikan..

        Hapus
    4. makasih gan tutorialnya bermanfaat untuk pemula... :2thumbup

      BalasHapus
    5. mas mau tanya itu var FD didapat darimna ya, yang di editkontakMouseClicked. Terimakasih

      BalasHapus
    6. ini variable fD dapet darimana ya mas?

      pada button ubah

      BalasHapus
    7. Nice pos gan

      kunjungi juga https://spacexzone.com/

      BalasHapus
    8. mantap jiwaa !
      makasih gan (y)

      BalasHapus
    9. Balasan
      1. DbUtils itu class dari library rs2xml.jar yang bantu kita buat nampilin data pada database ke dalam JTabel gan.

        Hapus