Setelah mencoba tahap 1, kita coba untuk membuat aplikasi untuk CRUD (Create, Read, Update, Delete) pada data di Oracle.
Kita mencoba untuk membuat aplikasi tersebut bisa select, insert, update delete dengan sederhana. Mulai dari menampilkan data di tabel java, sampai memberi fungsi CRUD di dalamnya.
Langsung aja deh gak usah banyak cingcong ^_^
Setelah data berhasil ditampilkan, kita berikan fungsi CRUD:
Kita mencoba untuk membuat aplikasi tersebut bisa select, insert, update delete dengan sederhana. Mulai dari menampilkan data di tabel java, sampai memberi fungsi CRUD di dalamnya.
Spoiler for open artikel bersangkutan:
Langsung aja deh gak usah banyak cingcong ^_^
- Buatlah New - Java Class, kemudian beri nama TableModelMhs. Berikut source codenya:
import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import java.util.Vector; import javax.swing.table.AbstractTableModel; public class TableModelMhs extends AbstractTableModel { //daftar judul-judul kolom tabel private String kolom[] = {"Nim", "Nama", "Alamat"}; // definisi variabel Vector untuk menyimpan data dari database private Vector baris = new Vector(); // set koneksi ke database // objek Connection kita ambil dari objek Login yang telah // dibuat di class FormLogin // Mengapa dapat kita akses? karena objek Login kita definisikan // sebagai public static private Connection conn = LoginForm.myLgn.getConnDB(); public TableModelMhs() { getRecDB(null); } public void finalize() { baris = null; conn = null; } // method ini berfungsi melakukan query ke database server // dan menampung hasilnya (dari ResultSet) ke masing-masing Vector public void getRecDB(String kondisi) { String query; // persiapkan perintah SQL yang akan dijalankan di database server query = "SELECT * FROM mahasiswa"; if (kondisi != null) { query = query + " WHERE " + kondisi; } query = query + " ORDER BY nim asc"; try { // buat objek Statement dari Connection // agar dapat mengeksekusi query Statement statement = conn.createStatement(); ResultSet resultSet = statement.executeQuery(query); // kosongkan semua Vector baris.removeAllElements(); // jika ada record yang diberikan dari database server // baca record demi record sampai selesai while (resultSet.next()) { // simpan ke dalam array masing-masing field //berhubung pada tabel mahasiswa ini hanya terdapat 3 kolom (nim, nama, alamat) maka dideklarasikan 3 object yang disimpan dalam array Object[] r = {resultSet.getString(1), resultSet.getString(2), resultSet.getString(3)}; // tambahkan ke Vector baris.addElement(r); //beri nilai null untuk mencega garbage r = null; } } catch (java.sql.SQLException e) { System.out.println("Error : " + e); } query = null; } public int getColumnCount() { return kolom.length; } public int getRowCount() { return baris.size(); } public Object getValueAt(int rowIndex, int columnIndex) { if (!baris.isEmpty()) { Object r[] = (Object[]) baris.elementAt(rowIndex); return r[columnIndex]; } else { return null; } } public String getColumnName(int columnIndex) { return kolom[columnIndex]; } // method untuk mengubah nilai pada sel Tabel public void setValueAt(Object aValue, int row, int column) { Object[] r = (Object[]) baris.elementAt(row); r[column] = aValue; baris.setElementAt(r, row); fireTableCellUpdated(row, column); } public boolean isCellEditable(int row, int column) { return false; } }
- Kemudian buatlah New - JFrame Form untuk membuat tampilannya - beri nama misalkan FormMahasiswa. Pasangkan tabel pada form ini (Palette - Swing Control - Table). Misalkan tampilan formnya adalah seperti gambar berikut:
- Klik kanan pada jTable - Properties - pilih pada model - pada pilihan drop down (set jTable1's model property using) pilih Costum code - isikan dengan new TableModelMhs() - Kemudian tekan OK - Close window properties. Yang dipanggil adalah class TableModel yang telah dibuat di atas.
- Kemudian pada menu utama, link-kan menu data mahasiswa pada FormMahasiswa yang telah dibuat diatas.
- Caranya double klik pada button data mahasiswa, atau klik kanan pada button data mahasiswa kemudian pilih Events - Actions - actionPerformed, isikan dengan syntax berikut:
new FormMahasiswa().setVisible(true);//memanggil jendela FormMahasiswa this.setVisible(false);//menutup jendela dari class itu sendiri
Memanggil class FormMahasiswa yang kemudian di tampilkan dengan perintah setVisible(true).
- Pada button Exit, lakukan hal yang sama seperti perintah 5 (double klik pada button Exit) kemudian isikan code berikut untuk mematikan proses/exit proses:
System.exit(0);
- Cobalah untuk menjalankan program, Run LoginForm kemudian login sesuai user dan password pada oracle anda.
- Pilih menu Data Mahasiswa, maka data dari oracle anda akan ditampilkan pada jTable
- Jika ingin memberi fungsi pada tombol Back, beri actionPerformed dan tambahin script berikut:
this.setVisible(false); //untuk menutup jendela dari class itu sendiri yaitu FormMahasiswa new MenuForm().setVisible(true);//kemudian menampilkan menu utama
Setelah data berhasil ditampilkan, kita berikan fungsi CRUD:
- Pada Class FormMahasiswa tersebut, tambahkan import berikut:
import java.sql.SQLException; import java.sql.Statement; import javax.swing.JOptionPane;
- Berikan actionPerformed pada tombol insert, dan tambahkan syntax berikut:
koneksiOracle co = new koneksiOracle(); //membuat object dari class koneksiOracle Statement st = co.sambung(); int a=0; try { String nim =jTextField1.getText(); //textfield nim String nama =jTextField2.getText(); //textfield nama String alamat =jTextField3.getText();//textfield alamat String sql = "insert into mahasiswa values('" +nim+ "', '"+nama+"','"+alamat+"')"; try { a =st.executeUpdate(sql); } catch (Exception se) { se.printStackTrace(); } if(a==0){ JOptionPane.showMessageDialog(null, "DATA GAGAL DISIMPAN \n Silahkan Coba Lagi"); } else{ JOptionPane.showMessageDialog(null, "DATA TERSIMPAN"); //mengosongkan textfield jika data telah tersimpan jTextField1.setText(""); jTextField2.setText(""); jTextField3.setText(""); jTable1.setModel(new TableModelMhs()); } } catch (Exception se) {}
- Pada actionPerformed Update:
koneksiOracle co = new koneksiOracle(); Statement st = co.sambung(); int a = 0; try { String nim = jTextField1.getText(); String nama = jTextField2.getText(); String alamat = jTextField3.getText(); String sql = "update mahasiswa set nim='" + nim + "', nama='" + nama + "', alamat='" + alamat + "'"; try { a = st.executeUpdate(sql); } catch (Exception se) { se.printStackTrace(); } if (a == 0) { JOptionPane.showMessageDialog(null, "DATA GAGAL DIUBAH \n Silahkan Coba Lagi"); } else { JOptionPane.showMessageDialog(null, "DATA TELAH DIUBAH"); jTable1.setModel(new TableModelMhs()); } } catch (Exception se) { }
- Pada actionPerformed Delete:
koneksiOracle co = new koneksiOracle(); Statement st = co.sambung(); String nim = jTextField1.getText(); String sql = "delete from mahasiswa where nim='" + nim + "'"; int proses = 0; try { proses = st.executeUpdate(sql); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } if (proses != 1) { JOptionPane.showMessageDialog(null, "DATA GAGAL DIHAPUS \n Ulangi Sekali Lagi"); } else { JOptionPane.showMessageDialog(null, "DATA BERHASIL DIHAPUS"); jTextField1.setText(""); jTable1.setModel(new TableModelMhs()); }
- Silahkan di coba insert data baru, update berdasarkan nim yang dipanggil di textfield nim, dan delete berdasarkan nim yang dipanggil di textfield nim.
pak bisa kasih tutorial search database.. ini baru insert,update,delete... thnks pak.
BalasHapus@Yogi: lihat di spoiler artikel bersangkutan di atas, ada link terkait kan, disitu udah ada utk pencarian... ini linknya:
BalasHapushttp://dhafiq-san.blogspot.com/2011/05/menambahkan-fungsi-search-pada-aplikasi.html
dan
http://dhafiq-san.blogspot.com/2011/05/fungsi-pencarian-dengan-pilihan.html
Pak.. mau tanya..jika 3 table saling ber relasi bagaimana ya coding nya?? terima kasih.
BalasHapusbaca di tutorial ini pak http://dhafiq-san.blogspot.com/2010/01/sql-query-menggabungkan-3-tabel.html
BalasHapuskalau coding nya di java nya gmn ya pak? saya memakai java dan oracle XE dengan relasi 3 tabel.trims pak
BalasHapussama aja pak, masukkan aja query joinnya, baru sesuaikan jumlah kolom yg akan ditampilkan di java
BalasHapussaya bingung di bagian ini pak..
BalasHapussaya lihat dari DataHadir milik bapak.
if (kondisi != null)
query = query + " WHERE p.id_pasien=r.id_pasien " + kondisi;
kalau 3 tabel hrs di tambahin apa ya di bagian sini..
tanpa itu juga gpp pak, jadi querynya langsung masukkan jadi satu saja.... di query...
BalasHapusow iya pak sudah bisa..saya mau tanya lagi pak.. saya kan lagi bikin program tentang reservasi hotel.. bagaimana codingnya di java jika tanggal_reservasi bisa di hari yang sama tetapi no_kamar harus berbeda dan No_Kamar tidak bisa sama kecuali tanggal_reservasi itu berbeda..
BalasHapusmoga2 paham apa yang sama maksud..:D
maksudnya itu gmn pak... masih blm paham ini pak
BalasHapusTidak jadi dah pak.. saya bingung jelasin nya gmn.begini saja sudah cukup kok.. terima kasih pak.blog bapak bnyk membantu tugas saya.
BalasHapusmau nanya,kalau agar form login kita aman dari sqlijection caranya gimana ya?
BalasHapusPercuma kalian tanya dan komen, tidak akan ada jawaban dari orang yang nulis postingan ini.
BalasHapus@welewele: sekarang saya mau tanya balik, bagaimana cara sqlinjection ke aplikasi desktop di java? nanti dapat di antisipasi
BalasHapus@anonim: ????
sebenarnya mengatasi sqlinjection pada java itu dapat diterapkan konsep MVC menggunakan framework, insyaAllah aman
BalasHapussiip,, maksih gan,,,
BalasHapuspak, untuk form dosen nya kok ga da??? trims untuk balasannnya
BalasHapushadi: sama-sama gan
BalasHapusanonim: ya silahkan di modifikasi sendiri :)
Kemarin pas ada tugas ini aja, nyarik gak ketemu-ketemu tapi gantian nyarik tutorial JSP malah nemu java tulent.. Grrrrrra!!!
BalasHapuswah..mksih pa buat tutorialnya, langsung terapin. :)
BalasHapusAssalamualaikum, ijin download materinya bang admin, terima ksih sebelumnya.
BalasHapusgimana caranya menghitung lama menginap pada hotel, yang batas checkoutnya jam 12 siang, trus terhitung satu hari walaupun belum genap 24 jam...
BalasHapusmohon bantuannya....
pak mudafiq..
BalasHapusbutuh pencerahan ni pak..
soal pencarian dengan menggunaka algoritma hashing..
tolong di posting juga dung pak...
makasi,,,,,
pada actionPerform Update ada yang kurang pak,
BalasHapusperlu tambahan condition
where nim='" + nim + "'
pak, kalau boleh usul. tolong posting dong mengenai database sqlite manager (add ons dari firefox) dan cara peng integrasian nya dengan java netbeans. terimakasih sebelumnya :)
BalasHapusgak lengkap.
BalasHapusmau nanya pak kalo update data gimana
BalasHapusmisal ( nama=azwar) diganti (nama=malik)
terimakasih
BalasHapus