20 Jun 2013

Insert Update Delete Database Java Netbeans dan MySQL

Rekomendasi : jika baru mengenal IDE Java Netbeans, buat file yang sesuai dengan saya Hai semua... thumbnail 1 summary
Insert Update Delete Database Java Netbeans dan MySQL

Rekomendasi : jika baru mengenal IDE Java Netbeans, buat file yang sesuai dengan saya
Hai semua, sekarang saya akan membuat tutorial CRUD dengan Java Netbeans dan MySQL. Karena sesuai dengan keyword masuk pada blog ini, saya akan memberikan tutorial langsung daripada tersesat di blog :)
Buatlah sebuah project baru dengan nama sesuai dengan selera anda pada IDE Netbeans. Lalu buatlah sebuah form terserah mau namanya apa juga.

Klik Next >

Klik Finish

Saya membuat project dengan nama Tes Database dan Form FormKoneksi


Lalu klik 2x pada FormKoneksi buatlah interface form nya seperti ini :

Drag Drop JLabel,JTextField,JTable dan JButton. Ubah Nama Variable Control dengan mengklik kanan pada control dan pilih Change Variable



Buatlah sebuah database terserah mau namanya apa dan bikin tabel anggota, berikut struktur tabelnya :

id int(10)
nama varchar(30)
alamat varchar(40)
tlp varchar(16)

atau kalau tidak mau susah payah, bisa diunduh pada paket download nanti :)

Berikut langkah yang sudah saya susun :

1. Buat Koneksi Database

Add JAR Library MySQL

Klik Add Library

Buka form dengan mengklik 2x pada FormKoneksi yang telah anda buat tadi, lalu klik tab Source.


Lalu ketik kode ini tepat di bawah nama package
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
Ini berfungsi agar paket-paket yang tersedia untuk Netbeans bekerja dengan baik

Lalu di bawah class FormKoneksi sisipkan kode :
private static Connection koneksi; //Koneksi
private DefaultTableModel model; //Model Tabel

Pada public FormKoneksi sisipkan kode berikut
//buat model tabel / header tabel
model=new DefaultTableModel();
this.jTable1.setModel(model);
model.addColumn("ID");
model.addColumn("Nama");
model.addColumn("Alamat");
model.addColumn("Telepon");
Buat sebuah void / function untuk membuat sebuah koneksi database, kenapa dibuat pakai function? untuk menimalkan penggunaan kode yang banyak, jadi tinggal panggil function aja nanti
private static Connection buka_koneksi() {
        if (koneksi==null) {
            try {
                String url="jdbc:mysql://localhost:3306/belajar"; //nama database belajar
                String user="root"; //user mysql
                String password=""; //password mysql
              
                DriverManager.registerDriver(new com.mysql.jdbc.Driver());
                koneksi=DriverManager.getConnection(url,user,password);
            }catch (SQLException t) {
                System.out.println("Error membuat koneksi");
            }
        }
     return koneksi;
    }

2. Proses Klik Button
Buka mode design dan klik kanan pada tombol Add , pilih actionnya
Maka anda langsung melihat mode source pada aksi Event klik Button Add
Buat kode berikut :
Connection c=buka_koneksi(); //panggil function koneksi
        if("Add".equals(this.cmbAdd.getText())) //Jika Button Add teks nya Add
         {
             this.cmbAdd.setText("Save"); //Buat Teks Button Add yaitu Save
             this.cmbEdit.setText("Cancel");
             this.cmbDelete.enable(false);
             this.cmbRefresh.enable(false);
             this.lblKode.setText("0"); //Kosongkan Nilai LabelKode
             this.TxtNama.setText("");
             this.TxtAlamat.setText("");
             this.TxtTelepon.setText("");
            
         }else if("Save".equals(this.cmbAdd.getText()))
         {
             //bikin sql query tambah data
             String sqlkode="Insert into anggota (`nama`,`alamat`,`tlp`) "
                     + "values ('"+this.TxtNama.getText()+"',"
                     + "'"+this.TxtAlamat.getText()+"',"
                     + "'"+this.TxtTelepon.getText()+"')";
            try { //jalankan query tersebut
               PreparedStatement p2=(PreparedStatement) c.prepareStatement(sqlkode);
               p2.executeUpdate();
               p2.close();
            } catch (SQLException ex) {
                JOptionPane.showMessageDialog(this, "Terjadi kesalahan "+ex.getMessage());
            }
             this.cmbAdd.setText("Add");
             this.cmbEdit.setText("Edit");
             this.cmbDelete.enable(true);
             this.cmbRefresh.enable(true);
         }else if("Update".equals(this.cmbAdd.getText()))
         {//bikin query update data
             String sqlkode="Update anggota SET `nama`='"+this.TxtNama.getText()+"',"
                     + "`alamat`='"+this.TxtAlamat.getText()+"',"
                     + "`tlp`='"+this.TxtTelepon.getText()+"' "
                     + "Where ID='"+this.lblKode.getText()+"'";
            try {
               PreparedStatement p2=(PreparedStatement) c.prepareStatement(sqlkode);
               p2.executeUpdate();
               p2.close();
            } catch (SQLException ex) {
                JOptionPane.showMessageDialog(this, "Terjadi kesalahan "+ex.getMessage());
            }
             this.cmbAdd.setText("Add");
             this.cmbEdit.setText("Edit");
             this.cmbDelete.enable(true);
             this.cmbRefresh.enable(true);
         }

Lalu action pada Button Edit
if("Edit".equals(this.cmbEdit.getText()))
         {
             this.cmbAdd.setText("Update");
             this.cmbEdit.setText("Cancel");
             this.cmbDelete.enable(false);
             this.cmbRefresh.enable(false);
         }else if("Cancel".equals(this.cmbEdit.getText()))
         {
             this.cmbAdd.setText("Add");
             this.cmbEdit.setText("Edit");
             this.cmbDelete.enable(true);
             this.cmbRefresh.enable(true);
         }
Action klik Button Delete
Connection c=buka_koneksi();
         String sqlkode="Delete from anggota "
                 + "Where ID='"+this.lblKode.getText()+"'";
            try {
               PreparedStatement p2=(PreparedStatement) c.prepareStatement(sqlkode);
               p2.executeUpdate();
               p2.close();
            } catch (SQLException ex) {
                JOptionPane.showMessageDialog(this, "Terjadi kesalahan "+ex.getMessage());
            }
Action Button Refresh
ambil_data_tabel();

3. Function Panggil Database dan Function Penggunaan JTabel
Buat function untuk memasukkan data ke JTabel
private void ambil_data_tabel()
{
    model.getDataVector().removeAllElements();
        model.fireTableDataChanged();
        try {           
            Connection c=buka_koneksi();
            Statement s= c.createStatement();
            String sql="Select * from anggota";
            ResultSet r=s.executeQuery(sql);
           
            while (r.next()) {
                Object[] o=new Object[4];
                o[0]=r.getString("id");
                o[1]=r.getString("nama");
                o[2]=r.getString("alamat");
                o[3]=r.getString("tlp");
               
               
                model.addRow(o);
            }
            r.close();
            s.close();
            ambil_tabel_klik();
        }catch(SQLException e) {
            System.out.println("Terjadi kesalahan "+e.getMessage());
        }
}
Buat function saat JTabel di klik
private void ambil_tabel_klik()
{
    int i=this.jTable1.getSelectedRow();
       
        if(i==-1)
        {
            return;
        }
        String kode=(String) model.getValueAt(i, 0);
        this.lblKode.setText(kode);
        String nama=(String) model.getValueAt(i, 0);
        this.TxtNama.setText(nama);
        String alamat=(String) model.getValueAt(i, 1);       
        this.TxtAlamat.setText(alamat);
        String tlp=(String) model.getValueAt(i, 2);
        this.TxtTelepon.setText(tlp);
}

Lalu buat action JTabel saat di klik

Sisipkan code berikut pada action MouseClicked :
this.ambil_tabel_klik();

Segitu dulu deh :)
Oya, dalam salam dari David Beckham nih :)

Kalau ada yang kurang, kasih tau saya ya :)