tutorial crud di java menggunakan netbeans & mysql (studi kasus presensi)

Tutorial Crud di Java Menggunakan Netbeans & MySql (Studi Kasus Presensi)

Posted on

Pada Kesempatan kali ini, semarsoft akan berbagi tentang tutorial CRUD di Java menggunakan Software Netbeans, Seperti biasanya, kita belajarnya menggunakan studi kasus, kali ini kita akan membuat Software Presensi Sederhana menggunakan Database MySql.

Sebelum itu, kita siapkan dulu software pendukungnya

  1. Netbeans, untuk praktikum kali ini, semarsoft menggunakan versi 8.2, kalian boleh menggunakan versi yang lebih tinggi
  2. JDK versi 10
  3.  Xampp, untuk layanan web server dan database server
  4. plugin rs2xml untuk mempermudah menampilkan database kedalam datagrid
  5. Browser

Pembuatan Database

  1. Pastikan software yang dibutuhkan sudah terinstall, seperti Netbeans IDE, XAMPP dan Browser
  2. Jalankan XAMPP kemudian aktifkan apache dan mysql sehingga muncul seperti tampilan di bawah iniXampp Crud Java
  3. Jika keduanya sudah aktif, buka browser kemudian ketikkan http://localhost/phpmyadmin/, pada menu
    language/bahasa pilih English agar bahasa yang anda gunakan sama dengan yang ada di tutorial iniLanguage Xampp
  4. Klik menu database, pada menu create database ketikkan LSP, Kemudian klik tombol createDatabase Xampp
    Setelah anda menekan tombol create, akan ada nama database lsp_shobi di menu sebelah kiri
    Jika anda ingin lebih mudah, silahkan mengcopy code query di bawah ini pada menu SQL di Phpmyadmin seperti tampilan di atas:
    CREATE DATABASE lsp_shobi;
    
  5. Langkah berikutnya membuat tabel dengan nama admin dengan struktur tabel sebagai berikut :tabel admin Crud Java Netbeans
    atau paste code query berikut ke dalam menu SQL
    CREATE TABLE `admin` (
      `id` int(3) NOT NULL,
      `username` varchar(35) NOT NULL,
      `password` varchar(35) NOT NULL,
      `Nama` varchar(45) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  6. Kemudian buat tabel dengan nama siswa dengan struktur tabel sebagai berikut :
    tabel Siswa Crud Java
    Gunakan Query berikut agar mempercepat latihan kita
    CREATE TABLE `siswa` (
      `NIS` int(8) NOT NULL,
      `NamaSiswa` varchar(80) NOT NULL,
      `JK` enum('L','P') NOT NULL,
      `Kelas` varchar(20) NOT NULL,
      `Alamat` text NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  7. Selanjutnya buat tabel dengan nama presensi dengan struktur tabel sebagai berikut :
    tabel Presensi Crud Java
    Gunakan code Query berikut untuk mempermudah
    CREATE TABLE `presensi` (
      `id` int(3) NOT NULL,
      `idAdmin` int(3) NOT NULL,
      `NIS` int(8) NOT NULL,
      `kehadiran` char(1) NOT NULL,
      `tgl` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
      `ket` varchar(40) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  8. Yang terkahir buat tabel view dengan nama vpresensi, view ini digunakan agar lebih mudah pada saat menampilkan data kehadiran siswa
    View Presensi Tutorial Crud Java
    Kita dapat mengeksekusi Query berikut untuk menghasilkan tabel berdasarkan struktur diatas
    CREATE VIEW `vpresensi`  AS  select `presensi`.`id` AS `id`,`siswa`.`NIS` AS `NIS`,`siswa`.`NamaSiswa` AS `Nama Siswa`,`presensi`.`kehadiran` AS `Status Kehadiran`,`presensi`.`tgl` AS `tgl`,`presensi`.`ket` AS `ket`,`admin`.`Nama` AS `Penginput` from `presensi` join `siswa` on`presensi`.`NIS` = `siswa`.`NIS` join `admin` on`presensi`.`idAdmin` = `admin`.`id` ;
    
    

    Sampai sini proses pembuatan databse sudah selesai, sehingga hasil akhir dari proses pembuatan database kita adalah seperti pada ERDigaram berikur ini, ER Diagram Tutorial Crud Java
    langkah berikutnya adalah membuat project di Netbeans

Pembuatan Project di Netbeans

    1. Jalankan Netbeans yang sudah berhasil terinstall
    2. Buat Project baru, caranya
      Flik File > New Project > Java > JavaApplication
      Pada menu project isikan LSP_NAMA, usahakan tidak ada spasi, Hilangkan centang pada Create Main Class kemudian tekan finish, perhatikan gambar di bawah iniNew Project Netbeans
    3. Pada project yang bari saja anda buat, klik source package kemudian klik kanan pada default package > New > Java PackageMembuat Package di Netbeans
    4. Kemudian isi package Namenya nya dengan nama “LSP”Membuat Package di Netbeans 2
    5. Pada menu libraries klik kanan > add library > MySQL JDBC Driver > Add LibraryImport MySQL JDBC Driver
    6. Klik kanan lagi Pada menu libraries > ADD Jar > cari rs2xml.jar (download di sini)
    7. Pada package LSP klik kanan > New > Java Class kemudian beri nama classnya dengan nama koneksi, perhatikan gambar di bawah ini
      Membuat Class Baru untuk Koneksi database
    8. Kemudian ketik kode di bawah ini
      package LSP;
      
      
      import java.sql.Connection;
      import java.sql.DriverManager;
      import java.sql.ResultSet;
      import java.sql.SQLException;
      import java.sql.Statement;
      import java.util.logging.Level;
      import java.util.logging.Logger;
      import javax.swing.DefaultComboBoxModel;
      import javax.swing.JOptionPane;
      import net.proteanit.sql.DbUtils;
      /**
       *
       * @author semarsoft| RPL 2021
       * 
       */
      public class koneksi {
          private Connection connection;
          private Statement statement;
          private ResultSet resultSet;
          public Integer id;
      
          public Integer getIdAdmin() {
              return id;
          }
      
          public void setIdAdmin(Integer id) {
              this.id = id;
          }
          
          
          
          public Connection getConnection() {
              return connection;
          }
      
          public void getCon() {
              
              try {
                  String urlDatabase = "jdbc:mysql://localhost/lsp"; //alamat database
                  String user = "root"; //user yang dipakai utk akses database
                  String password = ""; //password yang digunakan utk akses database
                  connection = DriverManager.getConnection(urlDatabase, user, password);
              } catch (SQLException ex) {
                  JOptionPane.showMessageDialog(null, "Koneksi Gagal! " + ex.getMessage());
              }   
             
          }
      
          public void Eksekusi(String Query, String Pesan){
              try {
                  statement=connection.createStatement();
                  statement.execute(Query);
                  statement.close();
                  JOptionPane.showMessageDialog(null, Pesan);
              } catch (SQLException ex) {
                  Logger.getLogger(koneksi.class.getName()).log(Level.SEVERE, null, ex);
              }
          }
      
         
          public void tampil(javax.swing.JTable table, String Query) {
              try {
           
                  statement = connection.createStatement();
                  resultSet = statement.executeQuery(Query);
                  
                  table.setModel(DbUtils.resultSetToTableModel(resultSet));
                  
                  statement.close();
                  resultSet.close();
              } catch (SQLException ex) {
                  JOptionPane.showMessageDialog(null, ex);
              }
          }
          
      
          
          public void combo(String Query, String ID,String Nama, javax.swing.JComboBox cb) {
      
              try {
      
                  String showDataQuery = Query;
                  statement = connection.createStatement();
                  resultSet = statement.executeQuery(showDataQuery);
                
                  while (resultSet.next()) {
                      cb.addItem(resultSet.getString(ID) + "-" + resultSet.getString(Nama));
                      
                  }
      
                  statement.close();
                  resultSet.close();
              } catch (SQLException ex) {
                  JOptionPane.showMessageDialog(null, "Gagal Menampilkan di combobox " + ex.getMessage());
              }
          }
         
      }

Membuat Form Login

  1. Pada Package LSP buatlah JFrame Form Login, klik Kanan Package LSP > New > JFrame Form > ketikkan
    class name dengan nama Login
    Membuat Form Login
  2. Buatlah tampilan seperti gambar di bawah ini,
    Tampilan Login
    Dengan property, komponen dan nama variable seperti gambar di bawah ini

    Nama Variabel Komponen di Form Login
    Nama Variabel Komponen di Form Login
  3. Klik JPanel1 Kemudian lihat menu property di sebelah kanan centang menu undecorated , sesuaikan dengan gambar berikut ini
    Property Form Login
  4. Setelah itu pilih Border pada property kemudian pilih Titled Border, Isi Title dengan nama Halaman Login, jika masih kurang faham, lihat tampilan berikut
    Property Border Form Login

Membuat Form Menu

  1. Pada Package LSP buatlah JFrame Form Menu, klik Kanan Package LSP > New > JFrame Form > ketikkan
    class name dengan nama MenuMembuat JFrame Form Menu
  2. Tambahkan komponen Desktop Pane, kemudian tambahkan menu bar diatasnya, lihat tampilan di bawah iniMembuat Form Menu
  3. Tambahkan menu dengan cara klik kanan pada menu bar paling kiri > pilih Add MenuAdd Menu
  4. Buatlah Sub Menu dengan cara klik kanan pada File > Add Drom Palette > Menu ItemMembuat Menu Item
  5. Klik kanan kemudian pilih Edit Text dan beri nama Keluar, Ubah Variabelnya dengan cara klik Change Variabel Name kemudian isi dengan nama MKeluar
    Mengubah Variabel Menu
  6. Selanjutnya buat Menu Master dan Sub menunya
    Menu master
  7. Kemudian buat Menu Transaksi dan sub menunya
    Menu Transaksi
  8. Sehingga variablenya seperti gambar di bawah ini
    List Variable Menu
    Hati-hati dalam penulisan variabel, pastikan penulisannya sama persis

Membuat Form Pengguna

    1. Pada Package LSP buatlah JInternalFrame Form Pengguna, klik Kanan Package LSP > New > Other >
      Swing GUI Form > buatlah JInternalFrame Form ketikkan class name dengan nama PenggunaMembuat JInternaFrame Pengguna
    2. Seperti proses pembuatan form Login, sekarang buatlah Seperti tampilan di bawah iniMembuat Form Pengguna
      Ubah Variabel seperti gambar di bawah ini
      List Variable Form Pengguna
    3. Ubah Property Closable, maximizable dan resizable pada InternalFrame seperti pada gambar di bawah
      ini
      Property Form Pengguna

Membuat Form Siswa

  1. Pada Package LSP buatlah JInternalFrame Form Siswa, klik Kanan Package LSP > New > JInternalFrame Form ketikkan class name dengan nama Siswa
  2. Buatlah Form seperti tampilan berikut ini
    Form Pendataan Siswa
  3. Ubah Text dan Variable seperti aturan di bawah ini
    Property Form Siswa

Membuat Form Presensi

  1. Pada Package LSP buatlah JInternalFrame Form Presensi, klik Kanan Package LSP > New > JInternalFrame Form ketikkan class name dengan nama Presensi, buat tampilan seperti pada gambar di bawah iniForm Presensi Java Netbeans
  2. Ubalah Variable dan Text name seperti gambar di bawah ini
    <Property Presensi

Persiapan Ngoding

Form Login

  1. Kembali ke Form LOGIN, di menu Design double klik pada tombol keluar, isikan coding berikut
    System.exit(0);
  2. Masih di Form Login, Double klik pada tambol Masuk, kemudian ketik code berikut
           shobi.getCon();
            
            try {
                String sql = "SELECT * FROM admin "
                        + "WHERE username = '" + txtUser.getText() + "' AND password = '" + txtPass.getText() + "'";
                Statement st = shobi.getConnection().createStatement();
                ResultSet rsLogin = st.executeQuery(sql);
     
                 
                 
                rsLogin.next();
                rsLogin.last(); //mengecek jumlah baris pada hasil query
                if (rsLogin.getRow()==1){
                    //jika login bertingkat
                     if(rsLogin.getString("username").equals("Kasir")){
                         //arahkan ke menu kasir
                     } else{
                         //arahkan ke menu admin
                     }
             
                    JOptionPane.showMessageDialog(null, "Login Berhasil!");
                    new Menu().setVisible(true); //<-- BILA MAU DIARAHKAN KE Frame Menu Utama
                    this.dispose();
                } else {
                    JOptionPane.showMessageDialog(null, "Maaf, Username / Password salah!");
                    txtUser.setText("");
                    txtPass.requestFocus();
                }
                
            } catch (SQLException e) {
                 JOptionPane.showMessageDialog(null, "Login Gagal!");
            }
    
  3. Di bawah class login tambahkan code seperti di bawah ini
    setLocationRelativeTo(this);
  4. Sehingga hasil akhirnya seperti gambar berikut
    Coding Login

Form Menu

  1. Kembali ke Form Menu, pada tombol keluar Masukkan code seperti di bawah ini
    new Login().setVisible(true);
    this.dispose();
  2. Masih di Design Form Menu, Double klik pada tambol Pengguna
    Pengguna P = new Pengguna();
    desk.add(P);
    P.setVisible(true);
  3. Masih di Design Form Menu, Double klik pada tambol Siswa
    Siswa S = new Siswa();
    desk.add(S);
    S.setVisible(true);
  4. Masih di Design Form Menu, Double klik pada tambol Presensi
    Presensi p = new Presensi();
    desk.add(p);
    p.setVisible(true);

Form Pengguna

  1. Kembali ke Form Pengguna, masuk ke menu source, buat objek koneksi terlebih dahuluObjek Koneksi
  2. Buat method baru di dalam class Pengguna dengan nama mati, hidup dan nampil
        private void nampil() {
            shobi.getCon();
            shobi.tampil(tbSiswa, "SELECT * FROM admin");
        }
        
        private void hidup(){
           txtNama.setEnabled(true);
           txtPassword.setEnabled(true);
           txtUser.setEnabled(true);
                   
        }
        
        private void mati(){
           txtNama.setEnabled(false);
           txtPassword.setEnabled(false);
           txtUser.setEnabled(false);
           txtID.setVisible(false);
           lbID.setVisible(false);
           
           txtNama.setText("");
           txtPassword.setText("");
           txtUser.setText("");
           txtID.setText("");
           
           
           btSimpan.setEnabled(false);
           btUbah.setEnabled(false);
           btHapus.setEnabled(false);
        }

     

  3. Panggil method nampil dan mati di bawah contructor Pengguna, sehingga hasilnya akan seperti ini
    public Pengguna() {
            initComponents();
            nampil();
            mati();
        }
  4. Pada Form Pengguna Double Click Tombol tambah, tambahkan coding berikut
    hidup();
    btSimpan.setEnabled(true);
  5. Masih di Form Pengguna, Double Click Tombol Ubah, tambahkan coding berikut
    shobi.getCon();
    shobi.Eksekusi("UPDATE `admin` SET `username` = '"+txtUser.getText()+"', "
       + "`password` = '"+txtPassword.getText()+"', `Nama` = '"+txtNama.getText()+"' "
       + "WHERE id = '"+txtID.getText()+"';", "Berhasil Mengupdate");
    nampil();
    mati();
  6. Masih di Form Pengguna, Double Click Tombol Simpan, tambahkan coding berikut
    if(txtNama.getText().equals("")){
      JOptionPane.showMessageDialog(null, "Data Nama Belum diisi");
    }else if (txtUser.getText().equals("")){
      JOptionPane.showMessageDialog(null, "Data User Belum diisi");
    }else if(txtPassword.getText().equals("")){
      JOptionPane.showMessageDialog(null, "Data Password Belum diisi");
    }else{
                        
      shobi.getCon();
      shobi.Eksekusi("INSERT INTO `admin` (`username`, `password`, `Nama`) "
                    + "VALUES ('"+txtUser.getText()+"', '"+txtPassword.getText()+"', '"+txtNama.getText()+"')", "Berhasil Menyimpan");
      nampil();
      mati();
    }
  7. Masih di Form Pengguna, Double Click Tombol Hapus
    int ok=JOptionPane.showConfirmDialog(null,"Apakah Anda yakin?","Konfirmasi",JOptionPane.YES_NO_OPTION);
      if(ok==0){
        shobi.getCon();
        shobi.Eksekusi("DELETE FROM ADMIN where id='"+txtID.getText()+"'", "Berhasil Menghapus");
        nampil();
        mati();
    }
  8. Masih di Form Pengguna, Klik kanan JTable > Events > Mouse > MouseClickedJtabel Pengguna
    int i = tbSiswa.getSelectedRow();
            
             txtID.setText(tbSiswa.getValueAt(i, 0).toString());
             txtUser.setText(tbSiswa.getValueAt(i, 1).toString());
             txtPassword.setText(tbSiswa.getValueAt(i, 2).toString());
             txtNama.setText(tbSiswa.getValueAt(i, 3).toString());
             
          
             btUbah.setEnabled(true);
             btTambah.setEnabled(false);
             btHapus.setEnabled(true);
             hidup();
             //nampil();

     

Form Siswa

  1. Buat objek koneksi terlebih dahulu
    koneksi shobi = new koneksi();
  2. Buat Method nampil, hidup dan mati
    private void nampil() {
            shobi.getCon();
            shobi.tampil(tbSiswa, "SELECT * FROM siswa");
        }
        
        private void hidup(){
           txtNama.setEnabled(true);
           txtAlamat.setEnabled(true);
           txtKelas.setEnabled(true);
           txtnis.setEnabled(true);
           cbJK.setEnabled(true);
                   
        }
        
        private void mati(){
           txtNama.setEnabled(false);
           txtAlamat.setEnabled(false);
           txtKelas.setEnabled(false);
           txtnis.setEnabled(false);
           cbJK.setEnabled(false);
           
           txtNama.setText("");
           txtAlamat.setText("");
           txtKelas.setText("");
           txtnis.setText("");
     
           btSimpan.setEnabled(false);
           btUbah.setEnabled(false);
           btHapus.setEnabled(false);
           
        }
  3. Panggil method nampil, hidup dan mati  di bawah contruktur Siswa
    nampil();
    mati();
  4. Tombol Tambah
    hidup();
    btSimpan.setEnabled(true);
  5. Tombol Ubah
    shobi.getCon();
    shobi.Eksekusi("UPDATE `siswa` SET `NamaSiswa` = '"+txtNama.getText()+"', `JK` = '"+cbJK.getSelectedItem()+"', `Kelas` = '"+txtKelas.getText()+"', `Alamat` = '"+txtAlamat.getText()+"' "
                    + "WHERE NIS = '"+txtnis.getText()+"';", "Berhasil Mengupdate");
    nampil();
    mati();
  6. Tombol Hapus
    int ok=JOptionPane.showConfirmDialog(null,"Apakah Anda yakin?","Konfirmasi",JOptionPane.YES_NO_OPTION);
    if(ok==0){
      shobi.getCon();
      shobi.Eksekusi("DELETE FROM siswa where nis='"+txtnis.getText()+"'", "Berhasil Menghapus");
      nampil();
      mati();
                
    }
  7. Tombol Simpan
    shobi.getCon();
    shobi.Eksekusi("INSERT INTO `siswa` (`NIS`, `NamaSiswa`, `JK`, `Kelas`, `Alamat`) "
    + "VALUES ('"+txtnis.getText()+"', '"+txtNama.getText()+"', '"+cbJK.getSelectedItem()+"', '"+txtKelas.getText()+"', '"+txtAlamat.getText()+"');", "OKE");
        
    nampil();
    mati();

     

  8. JTable Mouse Click
    int i = tbSiswa.getSelectedRow();
            
             txtnis.setText(tbSiswa.getValueAt(i, 0).toString());
             txtNama.setText(tbSiswa.getValueAt(i, 1).toString());
             cbJK.setSelectedItem(tbSiswa.getValueAt(i, 2).toString());
             txtKelas.setText(tbSiswa.getValueAt(i, 3).toString());
             txtAlamat.setText(tbSiswa.getValueAt(i, 4).toString());
             
             btUbah.setEnabled(true);
             btTambah.setEnabled(false);
             btHapus.setEnabled(true);
             hidup();
  9. Tombol Cari
    shobi.getCon();
    shobi.tampil(tbSiswa,"SELECT *  FROM `siswa` WHERE `NamaSiswa` LIKE '%"+txtCari.getText()+"%'");

Form Presensi

  1. Buat objek koneksi terlebih dahulu
    koneksi shobi = new koneksi();
    int Nis1=0;

    variabel Nis1 ini digunakan untuk menampung nilai NIS ketika memilih item pada Combo NIS, variabel Nis1 ini nanti yang akan kita gunakan untuk menyimpan NIS di database.

  2. Buat Method nampil, nampilCombo, hidup dan mati
        private void hidup(){
           txtKeterangan.setEnabled(true);
           cbNIS.setEnabled(true);
           cbPresensi.setEnabled(true);
           
        }
        private void mati(){
           txtKeterangan.setEnabled(false);
           cbNIS.setEnabled(false);
           cbPresensi.setEnabled(false);
           txtID.setVisible(false);
    
           txtKeterangan.setText("");
           btSimpan.setEnabled(false);
           btHapus.setEnabled(false);
        }
        private void nampilCombo(){
            shobi.getCon();
            shobi.combo("select * from siswa","NIS","NamaSiswa", cbNIS);
           // perintah shobi.combo() ini adalah memanggil method combo yang ada di dalam koneksi, 
           // tujuannya untuk menampilkan NIS beserta NamaSiswa di cbNIS
        }
    
         private void nampil(){
            shobi.getCon();
            shobi.tampil(tbSiswa, "SELECT * From vpresensi");
        }
  3. Panggil method nampil, nampilCombo, hidup dan mati  di bawah contruktur Siswa
    nampil();
    nampilCombo();
    mati();
    hidup();
  4. Tombol Tambah
    hidup();
    btSimpan.setEnabled(true);
  5. Tombol Hapus
    int ok=JOptionPane.showConfirmDialog(null,"Apakah Anda yakin?","Konfirmasi",JOptionPane.YES_NO_OPTION);
    if(ok==0){
    shobi.getCon();
    shobi.Eksekusi("DELETE FROM presensi where id='"+txtID.getText()+"'", "Berhasil Menghapus");
    nampil();
    mati();
    
    }
  6. Tombol Simpan
     shobi.getCon();
    shobi.Eksekusi("INSERT INTO `presensi` (`id`, `idAdmin`, `NIS`, `kehadiran`, `tgl`, `ket`) VALUES (NULL, '1', '"+Nis1+"', '"+cbPresensi.getSelectedItem()+"', CURRENT_TIMESTAMP, '"+txtKeterangan.getText()+"');", "Berhasil");
    nampil();

    Perhatikan, untuk nis kita gunakan variabel yang sudah kita deklarasikan di atas, yaitu Nis1. Jangan diberi dari cbNis.getSelectedItem(), agar tidak error.

  7. JTable Mouse Click
     int i = tbSiswa.getSelectedRow();
    
    txtID.setText(tbSiswa.getValueAt(i, 0).toString());
    cbNIS.setSelectedItem(tbSiswa.getValueAt(i, 1).toString());
    cbPresensi.setSelectedItem(tbSiswa.getValueAt(i, 2).toString());
    txtKeterangan.setText(tbSiswa.getValueAt(i, 3).toString());
    
    
    btTambah.setEnabled(false);
    btHapus.setEnabled(true);
    hidup();
  8. Tombol Cari
    shobi.getCon();
    shobi.tampil(tbSiswa,"SELECT *  FROM `vpresensi` WHERE `nis` LIKE '%"+txtCari.getText()+"%'");
  9. Combobox Nis
    String data[]=cbNIS.getSelectedItem().toString().split("-");
    Nis1=Integer.valueOf(data[0]);

    Perintah tersebut ditaruh pada combo nis, fungsinya untuk memecah antara NIS dan Nama yang terdapat pada Combo tersebut.

    Kenapa Kok Perlu di pecah?

    Iya, karena kita hanya butuh NIS saja, dan di database type data untuk NIS adalah integer, sehingga jika kita tidak membuat fungsi ini, maka data NIS tidak akan tersimpan, karena nilai yang diinputkan berupa string

Leave a Reply