Anda di halaman 1dari 7

Sebenarnya, sebelumnya saya pernah menulis tentang membuat aplikasi crud menggunakan java, namun yang tulis dulu

itu codenya terlalu panjang dan bila dikembangkan menggunakan banyak tabel akan terasa sedikit sulit, dan sekang yang ingin saya share adalah menggunakan code baru, yang lebih sedikit class nya dan lebih ringkas codenya. nanti bisa dilhat sendiri betapa mudah dan ringkasnya kode yg saya buat serta mudah untuk dipahami.. dan yang tidak kalah penting, dalam aplikasi ini sudah mengcakup konsep MVC atau model, view, control sehingga dapat di bedakan mana yang bertugas untuk view, control dan yang mengurusi keluar masuknya data dari dan ke database. hehee.. dibawah ini tampilan antarmukanya..

antarmuka pertama yang kita buat adalah databasenya. disini saya membuat database dengan nama sisteminformasi dan terdapat satu tabel yaitu tabel mahasiswa. bagi yang sudah terbiasa dengan mysql saya yakin tidak sulit untuk membuat database ini.
CREATE TABLE mahasiswa ( `nim` varchar(8) NOT NULL, `nama` varchar(40) NOT NULL, `alamat` varchar(50) NOT NULL, PRIMARY KEY (`nim`) ) ;

setelah itu kita buat project di netbeans dengan nama crudjava. lalu buat package untuk menampung class koneksi supaya mudah bacanya. dibawah ini code koneksi yang saya buat.. jangan lupa sebelumnya harus sudah memasukkan library mySQL jdbc connector.
package crudjava.koneksi; import java.sql.Connection;

import import import import

java.sql.DriverManager; java.sql.SQLException; java.util.logging.Level; java.util.logging.Logger;

public class DatabaseUtilities { private static Connection conn; public static Connection getConnection(){ if(conn==null){ try { DriverManager.registerDriver(new com.mysql.jdbc.Driver()); conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/sisteminforma si","root","root"); //db nya sisteminformasi, usernya root, dan passwordnya root } catch (SQLException ex) { Logger.getLogger(DatabaseUtilities.class.getName()).log(Level.SEVERE, null, ex); } } return conn; } }

untuk hirarki projectnya dapat dilihat dibawah..

Project

lalu setelah kita buat koneksi, kita buat class yang merepresentasikan tabel yang ada di database. atau istilahnya adalah POJO (Plain Old Java Object ). karena di database nama tabelnya mahasiswa, jadi diproject saya juga beri nama classnya Mahasiswa dan saya letakkan di dalam package entity.
package crudjava.entity; public class Mahasiswa { private String nim; private String nama; private String alamat; public Mahasiswa() { } public Mahasiswa(String nim, String nama, String alamat) { this.nim = nim; this.nama = nama; this.alamat = 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; } }

setelah class Mahasiswa saya membuat Interface dengan nama InterMahasiswa, fungsi interface bisa dicari di google. dan saya juga pernah memposting apa bedanya interface dengan abstract. mungkin bisa dibaca-baca..hehe. bagi saya interface itu adalah aturan awal yang harus dibuat untuk dipatuhi dalam membuat crud(create, read, update, delete) yang nantinya di implement ke class yang berfungsi sebagai control. kenapa harus di buat interface, itu karena bila nanti kita ingin merubah class control dari mysql ke oracle atau postgre, class yang baru yang menuju oracle tinggal implement ke interface, dengan begitu class mysql oracle ataupun yang lainnya memiliki aturan yang sama. karena implement dari satu interface.. wah panjang juga ya..hehee , oke dibawah ini code untuk interfacenya.
package crudjava.interfc;

import crudjava.entity.Mahasiswa; import java.sql.SQLException; import java.util.List; public interface InterMahasiswa { Mahasiswa insert(Mahasiswa o) throws SQLException; void update(Mahasiswa o) throws SQLException; void delete(String nim) throws SQLException; List getAll() throws SQLException; }

setelah membuat interface, kita buat class yang mengimplement interface yang nanti isinya adalah coding insert update delete read. dan disini saya beri nama ImpleMahasiswa.
package crudjava.implement; import import import import import import import import import crudjava.entity.Mahasiswa; crudjava.interfc.InterMahasiswa; crudjava.koneksi.DatabaseUtilities; java.sql.PreparedStatement; java.sql.ResultSet; java.sql.SQLException; java.sql.Statement; java.util.ArrayList; java.util.List;

public class ImpleMahasiswa implements InterMahasiswa{ public Mahasiswa insert(Mahasiswa o) throws SQLException {//untuk insert ke database PreparedStatement st=DatabaseUtilities.getConnection().prepareStatement("insert into mahasiswa values(?,?,?)"); st.setString(1, o.getNim()); st.setString(2, o.getNama()); st.setString(3, o.getAlamat()); st.executeUpdate(); return o; } public void update(Mahasiswa o) throws SQLException {//untuk update ke database PreparedStatement st=DatabaseUtilities.getConnection().prepareStatement("update mahasiswa set nama=?,alamat=? where nim=?"); st.setString(1, o.getNama()); st.setString(2, o.getAlamat()); st.setString(3, o.getNim()); st.executeUpdate(); } public void delete(String nim) throws SQLException {// untuk delete berdasarkan nim PreparedStatement st=DatabaseUtilities.getConnection().prepareStatement("delete from mahasiswa where nim=?"); st.setString(1, nim);

st.executeUpdate(); } public List getAll() throws SQLException { // untuk read all, jadi semua data diambil dan ditampilkan Statement st=DatabaseUtilities.getConnection().createStatement(); ResultSet rs=st.executeQuery("select * from mahasiswa"); Listlist=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; } }

setelah implement jadi, skrng kita tinggal membaut form untuk input dan output. dengan desaign seperti diatas. dan saya beri nama FormUtama. koding dibelakang nya seperti ini : dibawah ini adalah coding yang butuhkan sebelum memberikan kode pada tombol tambah, ubah, hapus.
List record=new ArrayList();//untuk menampung getAll() InterMahasiswa mhsServis;//untuk membuat objek dari class implement mahasiswa int row;//untuk membantu dalam menampilkan data di textfield nim nama alamat. /** Creates new form FormUtama */ public FormUtama() { initComponents(); mhsServis = new ImpleMahasiswa(); //supaya kalo data di table di klik maka data akan muncul langsung di textfield nim nama alamat jTable1.getSelectionModel().addListSelectionListener(new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { row=jTable1.getSelectedRow(); if(row!=-1){ isiText(); } } }); this.statusAwal(); } //untuk meload semua data yg ada di tabel mahasiswa ke dalam aplikasi ketika dibuka void loadData(){ try { record = mhsServis.getAll(); } catch (SQLException ex) { Logger.getLogger(FormUtama.class.getName()).log(Level.SEVERE, null, ex);

} } //untuk mengurusi table yang ada di antarmuka. supaya mempunya judul nim, nama, alamat, serta dengan isinya yang //selalu update. void isiTabel(){ Object data[][]=new Object[record.size()][3]; int x=0; for(Mahasiswa mhs:record){ data[x][0]=mhs.getNim(); data[x][1]=mhs.getNama(); data[x][2]=mhs.getAlamat(); x++; } String judul[]={"nim","nama","alamat"}; jTable1.setModel(new DefaultTableModel(data, judul)); jScrollPane1.setViewportView(jTable1); } //coding untuk isi text ke dalam textfield nim nama alamat void isiText(){ Mahasiswa mhs=record.get(row); txtNim.setText(mhs.getNim()); txtNama.setText(mhs.getNama()); txtAlamat.setText(mhs.getAlamat()); } //untuk mengosongkan text bila setelah tambah data atau yang lainnya void kosongkanText(){ txtNim.setText(""); txtNama.setText(""); txtAlamat.setText(""); } //untuk menyatukan method2 yang kita buat diatas supaya dapat berjalan secara teratur dan memanggilnya dengan //mudah. void statusAwal(){ kosongkanText(); loadData(); isiTabel(); }

nah yang dibawah ini adalah isi dari tombol2nya.


//tombol tambah private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { try { // TODO add your handling code here: Mahasiswa mhs = new Mahasiswa(); mhs.setNim(txtNim.getText()); mhs.setNama(txtNama.getText()); mhs.setAlamat(txtAlamat.getText()); mhsServis.insert(mhs); this.statusAwal(); JOptionPane.showMessageDialog(this, "data tersimpan"); } catch (SQLException ex) { Logger.getLogger(FormUtama.class.getName()).log(Level.SEVERE, null, ex); } } //tombol ubah private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { try { // TODO add your handling code here:

Mahasiswa mhs = new Mahasiswa(); mhs.setNim(txtNim.getText()); mhs.setNama(txtNama.getText()); mhs.setAlamat(txtAlamat.getText()); mhsServis.update(mhs); this.statusAwal(); JOptionPane.showMessageDialog(this, "data berhasil diubah"); } catch (SQLException ex) { Logger.getLogger(FormUtama.class.getName()).log(Level.SEVERE, null, ex); } } //tombol delete private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { try { // TODO add your handling code here: String nim = txtNim.getText(); mhsServis.delete(nim); this.statusAwal(); JOptionPane.showMessageDialog(this, "data berhasil dihapus"); } catch (SQLException ex) { Logger.getLogger(FormUtama.class.getName()).log(Level.SEVERE, null, ex); } }

dan dibawah ini isi untuk class main nya..


public class Main { public static void main(String[] args) { try { // TODO code application logic here UIManager.setLookAndFeel(new NimbusLookAndFeel()); SwingUtilities.invokeLater(new Runnable() { public void run() { FormUtama form = new FormUtama(); form.setLocationRelativeTo(null); form.setVisible(true); } }); } catch (UnsupportedLookAndFeelException ex) { Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); } } }

dengan coding yang sebelumnya, saya rasa lebih ringkas coding ini. selamat mencoba.. untuk MVC nya bisa dicari sendiri. bila sudah memahami coding ini maka akan ditemukan mana MVCnya..hehehe, silahkan chat bila ada yang ingin ditanyakan, atau sharing sama2.. oh ya, projectnya dapat di donwnload disini..