Program insert update delete sederhana menggunakan java

Sudah lama saya ingin memostingkan hal ini tapi blum kesampean karena terlalu rumit untuk di posting..hehe semoga hari ini bisa terpostingkan dengan baik..
Disini saya menggunakan database MySQL. dan DAO(Data akses object) menggukan JDBC(java database connection) serta editornya menggunakan IDE Netbeans 6.9 . program ini bagus untuk belajar konsep jdbc atau konsep koneksi database dijava, karena framework yang beredar untuk memudahkan dalam urusan database juga pada dasarnya adalah jdbc. dan supaya kalau saya lupa bisa buka blog saja dari pada buka program dinetbeans..hehee,, program ini sudah berupa GUI (grapical user interface) jadi mudah untuk pahami dan di analisis.. untuk dibawah ini saya berikan sourcodenya, dan untuk analisis sourcecode ataupun alasisis programnya ada disini.

guinya

pertama kita buat databasenya dahulu. silahkan masuk keroot database anda..menggunakan console/command prompt bisa atau menggunakan phpmyadmin juga boleh : dibawah saya contohkan yang menggunakan console.

>create database sisteminformasi;
>use sisteminformasi;
>create table mahasiswa(nim varchar(15) primary key not null, 
                        nama varchar(50) not null, 
                        alamat varchar(100) not null);

setelah itu buat project anda di netbeans. saat saya memostingkan artikel ini netbeans sudah realease netbeans 6.9.1
setelah membuat project silahkan buat package package yang dibutuhkan, untuk nama package terserah anda..
packages
pertama kita buat class Mahasiswa.java

package bahrie.entity;

/**
 *
 * @author bahrie
 */
public class Mahasiswa {

    private String nim;
    private String nama;
    private String alamat;

    public String getAlamat() {
        return alamat;
    }

    public void setAlamat(String alamat) {
        this.alamat = alamat;
    }

    public String getNama() {
        return nama;
    }

    public void setNama(String nama) {
        this.nama = nama;
    }

    public String getNim() {
        return nim;
    }

    public void setNim(String nim) {
        this.nim = nim;
    }

    public Mahasiswa() {
    }

    public Mahasiswa(String nim, String nama, String alamat) {
        this.nim = nim;
        this.nama = nama;
        this.alamat = alamat;
    }
}

setelah itu buat interface untuk dao nya.. dengan nama DataInterface.java
ingat interface beda dengan class, dan di netbeans untuk membuat interface menggunakan cara New -> Java Interface..

package bahrie.model;

import bahrie.entity.Mahasiswa;
import java.sql.SQLException;
import java.util.List;

/**
 *
 * @author bahrie
 */
public interface DataInterface {

    public void connect() throws SQLException;
    public void disconnect() throws SQLException;
    public List  read() throws SQLException;
    public void insert(Mahasiswa mahasiswa) throws  SQLException;
    public void update(String nim, Mahasiswa mahasiswa) throws SQLException;
    public void delete(String nim) throws SQLException;
    public Mahasiswa read(String nim) throws  SQLException;


}

setelah interface kita buat DAO nya dengan nama class DaoMySql.java

package bahrie.model;

import bahrie.entity.Mahasiswa;
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 java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author bahrie
 */
public class DaoMySql implements DataInterface {

    private String dbHost = "jdbc:mysql://localhost:3306/sisteminformasi";
    private String dbUser = "root";
    private String dbPass = "root";
    private Connection conn;

    public DaoMySql() {
        try {
            try {
                Class.forName("com.mysql.jdbc.Driver").newInstance();
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(DaoMySql.class.getName()).log(Level.SEVERE, null, ex);
            }
        } catch (InstantiationException ex) {
            Logger.getLogger(DaoMySql.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(DaoMySql.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    public DaoMySql(Connection conn) {
        this.conn = conn;
    }

    public void connect() throws SQLException {
        this.conn = DriverManager.getConnection(dbHost, dbUser, dbPass);
    }

    public void disconnect() throws SQLException {
        this.conn.close();
    }

    public List read() throws SQLException {
        Statement st = conn.createStatement();
        String sql = "select *from mahasiswa";
        ResultSet rs = st.executeQuery(sql);
        List list = new ArrayList();
        while (rs.next()) {
            Mahasiswa mhs = new Mahasiswa();
            mhs.setNim(rs.getString("nim"));
            mhs.setNama(rs.getString("nama"));
            mhs.setAlamat(rs.getString("alamat"));
            list.add(mhs);
        }
        return list;
    }

    public void insert(Mahasiswa mahasiswa) throws SQLException {
        String sql = "insert into mahasiswa (nim, nama, alamat) values(?,?,?);";
        PreparedStatement ps = this.conn.prepareStatement(sql);
        ps.setString(1, mahasiswa.getNim());
        ps.setString(2, mahasiswa.getNama());
        ps.setString(3, mahasiswa.getAlamat());
        ps.executeUpdate();

    }

    public void update(String nim, Mahasiswa mahasiswa) throws SQLException {
        String sql = "update mahasiswa set nim=?,nama=?,alamat=? where nim=?";
        PreparedStatement ps = this.conn.prepareStatement(sql);
        ps.setString(1, mahasiswa.getNim());
        ps.setString(2, mahasiswa.getNama());
        ps.setString(3, mahasiswa.getAlamat());
        ps.setString(4, nim);
        ps.executeUpdate();
    }

    public void delete(String nim) throws SQLException {
        String sql = "delete from mahasiswa where nim=?";
        PreparedStatement ps = this.conn.prepareStatement(sql);
        ps.setString(1, nim);
        ps.executeUpdate();
    }

    public Mahasiswa read(String nim) throws SQLException {
        String sql = "select *from mahasiswa where nim = ?";
        PreparedStatement ps = this.conn.prepareStatement(sql);
        ps.setString(1, nim);
        ResultSet rs = ps.executeQuery();
        Mahasiswa mahasiswa = new Mahasiswa();
        while (rs.next()) {
            mahasiswa.setNim(rs.getString("nim"));
            mahasiswa.setNama(rs.getString("nama"));
            mahasiswa.setAlamat(rs.getString("alamat"));
        }
        return mahasiswa;
    }
}

setelah dao nya jadi, sekarang kita buat viewnya atau desaign tampilannya.. silahkan masuk New -> JFrame Form
disini saya beri nama Contoh.java

tampilannya seperti diatas dan dibawah ini adalah sourcecode yang ada dibelakang desaign..

package bahrie.view;

import bahrie.entity.Mahasiswa;
import bahrie.model.DaoMySql;
import bahrie.model.DataInterface;
import bahrie.model.TableModelMahasiswa;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.TableModel;

/**
 *
 * @author bahrie
 */
public class Contoh extends javax.swing.JFrame {

    DataInterface daoMysql = new DaoMySql();
    TableModelMahasiswa tableModelMahasiswa;
    List records = new ArrayList();

    /** Creates new form Contoh */
    public Contoh() {
        initComponents();
        loadData();
    }

    void kosongkanTeks() {
        txtNim.setText("");
        txtNama.setText("");
        txtAlamat.setText("");
    }

    public TableModelMahasiswa getTableModelMahasiswa() {
        return tableModelMahasiswa;
    }

    public void setTableModelMahasiswa(TableModelMahasiswa tableModelMahasiswa) {
        this.tableModelMahasiswa = tableModelMahasiswa;
    }

    void loadData() {
        try {
            daoMysql.connect();
            List list = new ArrayList();
            list = daoMysql.read();
            TableModel tableModel = new TableModelMahasiswa(list);
            tabelMhs.setModel(tableModel);
            daoMysql.disconnect();


        } catch (SQLException ex) {
            Logger.getLogger(Contoh.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

//disini terdapat generet dari netbeans, jadi nanti akan otomatis ada.    

    private void buttonTambahActionPerformed(java.awt.event.ActionEvent evt) {                                             
        try {
            if (!txtNim.getText().isEmpty()
                    && !txtNama.getText().isEmpty()
                    && !txtAlamat.getText().isEmpty()) {
                // TODO add your handling code here:
                daoMysql.connect();
                Mahasiswa mhs = new Mahasiswa();
                mhs.setNim(txtNim.getText());
                mhs.setNama(txtNama.getText());
                mhs.setAlamat(txtAlamat.getText());
                daoMysql.insert(mhs);

                loadData();
            } else {
                JOptionPane.showMessageDialog(null, "Harus diisi semua", "Salah", JOptionPane.ERROR_MESSAGE);
            }
            this.kosongkanTeks();
        } catch (SQLException ex) {
        }
    }                                            

    private void buttonUptadeActionPerformed(java.awt.event.ActionEvent evt) {                                             
        try {
            daoMysql.connect();
            int index = tabelMhs.getSelectedRow();

            if (buttonUptade.getText().equals("Update")) {

                records = daoMysql.read();
                Mahasiswa mahasiswa = records.get(index);


                String nim = mahasiswa.getNim();
                Mahasiswa mhs = daoMysql.read(nim);
                txtNim.setText(mhs.getNim());
                txtNama.setText(mhs.getNama());
                txtAlamat.setText(mhs.getAlamat());
                buttonUptade.setText("Simpan");
            } else {
                Mahasiswa mhs1 = new Mahasiswa();
                mhs1.setNim(txtNim.getText());
                mhs1.setNama(txtNama.getText());
                mhs1.setAlamat(txtAlamat.getText());
                if (JOptionPane.showConfirmDialog(this, "apakah anda yakin untuk melakukan update", "konfirmasi update", JOptionPane.OK_CANCEL_OPTION) == 0) {
                    daoMysql.update(records.get(index).getNim(), mhs1);
                    loadData();
                    this.kosongkanTeks();
                    buttonUptade.setText("Update");
                    JOptionPane.showMessageDialog(this, "Data berhasil di update");
                }
            }
            daoMysql.disconnect();
        } catch (SQLException ex) {
            Logger.getLogger(Contoh.class.getName()).log(Level.SEVERE, null, ex);
        }

    }                                            

    private void buttonDeleteActionPerformed(java.awt.event.ActionEvent evt) {                                             
        // TODO add your handling code here:
        int index = tabelMhs.getSelectedRow();
        try {
            if (JOptionPane.showConfirmDialog(this, "apakah anda yakin untuk menghapus data", "konfirmasi penghapusan", JOptionPane.OK_CANCEL_OPTION) == 0) {
                daoMysql.connect();
                records = daoMysql.read();
                daoMysql.delete(records.get(index).getNim());
                JOptionPane.showMessageDialog(this, "data berhasil di hapus");
            }
            loadData();

        } catch (SQLException ex) {
            // Logger.getLogger(Contoh.class.getName()).log(Level.SEVERE, null, ex);
            JOptionPane.showMessageDialog(null, "data belum dipilh", "error", JOptionPane.ERROR_MESSAGE);
        }
    }                                            

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new Contoh().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify                     
    private javax.swing.JButton buttonDelete;
    private javax.swing.JButton buttonTambah;
    private javax.swing.JButton buttonUptade;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JLabel labelAlamat;
    private javax.swing.JLabel labelNama;
    private javax.swing.JLabel labelNim;
    private javax.swing.JTable tabelMhs;
    private javax.swing.JTextField txtAlamat;
    private javax.swing.JTextField txtNama;
    private javax.swing.JTextField txtNim;
    // End of variables declaration                   
}

setelah itu kita buat class TableModelMahasiswa.java untuk mengurusi table yang ada di view..

package bahrie.model;

import bahrie.entity.Mahasiswa;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;

/**
 *
 * @author bahrie
 */
public class TableModelMahasiswa extends AbstractTableModel {

    List list = new ArrayList();

    public TableModelMahasiswa(List list) {
        this.list = list;
    }

    public TableModelMahasiswa() {
    }

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

    public int getColumnCount() {
        return 3;
    }

    public Mahasiswa select(int index) {
        return list.get(index);
    }

    public Object getValueAt(int rowIndex, int columnIndex) {
        switch (columnIndex) {
            case 0:
                return list.get(rowIndex).getNim();
            case 1:
                return list.get(rowIndex).getNama();
            case 2:
                return list.get(rowIndex).getAlamat();
            default:
                return null;
        }
    }

    @Override
    public String getColumnName(int column) {
        switch (column) {
            case 0:
                return "Nim";
            case 1:
                return "Nama";
            case 2:
                return "Alamat";
            default:
                return null;
        }
    }
}

untuk code yang ada di view dan tabelmodel pembuatannya saling bergantian untuk saling melengkapi..

jangan lupa librarynya harus diisi jdbc connector..

selamat mencoba..๐Ÿ˜€

sourcecodenya ada dibawah ini :

http://bahrie127.googlecode.com/files/crudsederhana.zip

=======
Tutorial yang hampir sama tapi dengan cara yang lebih sederhana : http://bahrie27.com/2011/03/09/mudahnya-membuat-aplikasi-crud-di-java-dg-database-mysql/

28 Komentar (+add yours?)

  1. Trackback: (Analisis) Program insert update delete sederhana dijava « Coretan Seorang Hamba
  2. haydar
    Feb 06, 2011 @ 05:48:01

    wah bang barhri hebat jarang ada web ngasi tutorial yang seperti ini sukses ya bang,.. salut buat blognya heheheh…

    Balas

  3. mgafur
    Jun 05, 2011 @ 21:33:42

    klo tutorialx kayak gini, ngoding java jadi lebih semangat,
    terima kasih atas tutorialnya, semoga ilmu yg di share menjadi amal
    yg berberkah

    Balas

  4. ais
    Jun 07, 2011 @ 07:54:16

    makasi bnyk mas ilmunya๐Ÿ™‚

    Balas

  5. aku
    Sep 12, 2011 @ 13:35:50

    mas, kok updatenya ga bisa ya?cum bisa update sekali aja tuh…

    Balas

    • bahrie-___-
      Sep 14, 2011 @ 16:27:30

      pake contoh yang terbaru aja.. yg lama emang gitu.. udah saya edit tetep ga mo brubah tuh kodingan di postingan..hehehe

      Balas

  6. apry
    Nov 05, 2011 @ 01:20:43

    nice

    Balas

  7. Zaenudin
    Des 18, 2011 @ 00:19:37

    Tutorialnya bagus mas untuk dan jelas untuk model – model
    Oopnya dah good mas……

    kalau bisa sama penjelasannya mas supaya lebih ngerti bagi pemula mas…

    terima kasih tutorialnya…….
    good..

    Balas

  8. Agus Waruwu
    Apr 27, 2012 @ 02:50:27

    Terimakasih ya Tutorialnya..,
    sangat membangun dan tambah bersemangat saya dlm membuat program…

    Balas

  9. delonge
    Jun 18, 2012 @ 17:48:04

    om saya udah coba dan bisa tapi databasenya g konek ni gmana y?? tolong dibantu

    Balas

  10. vivi
    Okt 15, 2012 @ 08:56:45

    mas k’ ngak konek yaaa..

    Balas

  11. arie
    Nov 14, 2012 @ 11:05:30

    mas , klo koding discount kayak mana..
    misalnya 1000000 x 60% gitu mas ..
    supaya dapet hasilnya apa coding nya mas ..

    Balas

  12. irwan
    Des 21, 2012 @ 13:31:06

    kalo implementasi DAO pada Hibernate itu, caranya gmna mas?

    Balas

  13. Andi
    Jan 08, 2013 @ 08:22:34

    Mas Mahasiswa mhs = daoMysql.read(nim); klo pake integer gimana?

    Balas

  14. rina puspasistha (@puspasistha)
    Feb 14, 2013 @ 05:59:38

    mas,itu yg di package bahrie.sql kan ada database.sql itu gmna caranya mas?makasih๐Ÿ™‚

    Balas

  15. febry
    Feb 21, 2013 @ 10:16:58

    bang listing updatenya ada dibagian mana?๐Ÿ˜€
    ane keliru๐Ÿ˜€

    Balas

  16. catatanseorangpujangga
    Jul 31, 2013 @ 10:24:04

    mas,kalau update data berupa gambar gimana ya mas?

    Balas

  17. catatanseorangpujangga
    Jul 31, 2013 @ 10:28:07

    kalau update berupa gambar gimana mas??

    Balas

  18. mole
    Des 11, 2013 @ 12:21:47

    makasih mas tutoialnya,,
    tapi kalau mu namabah aksi pencarian source code nya gmn ya mas?
    mohon d bantu..๐Ÿ˜€

    Balas

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: