KONEKSI KE DATABASE DENGAN JDBC 2 Menampilkan ke JTable Pada begian ini melanjutkan program dan rancangan JFrame sebelumnya, kamudian ditambahkan tampilan tabel di bawahnya. Tabel akan menampilkan setiap kali ada perubahan, setelah menekan tombol Simpan. Ubahlah Form sebelum seperti pada rancangan From di bawah ini : Komponen Property Nilai JFrame Class settitle() NewJFrameUbahData Mengubah Data Pegwai ButtonGroup Variable Name buttongroupseks
JButton Variable Name SetText() jbuttonselesai Selesai JButton Variable Name SetText() jbuttonsimpan Simpan JComboBox Variabel Name model jcomboboxagama --Pilihan--- ISLAM PROTESTAN KATHOLIK HINDU BUDHA JRadioButton Variable Name jradiobuttonl JRadioButton Variable Name jradiobuttonp JComboBox Variable Name model jcomboboxnip kosongkan JTextField Variable Name SetText() JTextField jtextfieldnama JTextField Variable Name SetText() JTextField jtextfieldalamat Mengatur Model JTable Klik bagian jtabe1 Klik kanan tombol mouse pada PopUp menu Klik pilih Customize Code Pada dialog Initilization code Klik combobox Custome property, seperti pada gambar berikut :
Diubah menjadi, jtable.setmodel(new javax.swing.defaulttablemodel( data, judulkolom )); Seperti telihat gambar di bawah ini :
Klik tombol OK Tambahkan Kode : /* * NewJFrameUbahData.java * * Created on 19 Mei 10, 1:00:03 */ /** * * @author Badiyanto */ import java.sql.*; import java.io.*; import java.util.vector; import javax.swing.*; import javax.swing.table.tablecolumn;
public class NewJFrameUbahData extends javax.swing.jframe NewClassKoneksi x; private Vector<Vector<String>> data; private Vector<String> judulkolom; /** Creates new form NewJFrameUbahData */ public NewJFrameUbahData() judulkolom = new Vector<String> (); judulkolom.add("nip"); judulkolom.add("nama"); judulkolom.add("alamat"); judulkolom.add("seks"); judulkolom.add("agama"); data = new Vector<Vector<String>> (); initcomponents(); x = new NewClassKoneksi(); buttongroup1.add(jradiobuttonl); buttongroup1.add(jradiobuttonp); x.koneksi(); tampiltabel(); jscrollpane1.setviewportview(jtable1); Penjelasan import java.util.vector; import javax.swing.*; import javax.swing.table.tablecolumn; berkaitan dengan penggunaan kelas yang dipakai pada Jtable. private Vector<Vector<String>> data; Deklarasi variabel data vektor 2 dimensi untuk menempatkan isi tabel private Vector<String> judulkolom; Deklarasi variabel judulkolom vektor 1 dimensi untuk memberikan nama judul kolom pada tabel. judulkolom = new Vector<String> (); Menciptakan kelas vektor 1 dimensi, untuk judul kolom judulkolom.add("nip"); judulkolom.add("nama"); judulkolom.add("alamat");
judulkolom.add("seks"); judulkolom.add("agama"); Mengisi nama judul kolom pada kolom 0 Nip, kolom 1 Nama dan seterusnya. data = new Vector<Vector<String>> (); Menciptakan kelas vektor 2 dimensi, untuk data. Mengisi ComboNip private void formwindowactivated(java.awt.event.windowevent evt) // TODO add your handling code here: String sql="select nip FROM pegawai ORDER BY nip"; jcomboboxnip.removeallitems(); try x.st = x.conn.createstatement(); x.rs = x.st.executequery(sql); catch (SQLException e) return; try jcomboboxnip.additem("--pilihan--"); while (x.rs.next()) jcomboboxnip.additem(x.rs.getstring("nip").tostring()); x.rs.close(); x.st.close(); catch (SQLException e) return; Menampilkan dari hasil Query ke JTable, dalam hal ini program dibuat secara modular menggunakan fungsi void tampiltable(); Cara pemanggilan tampiltabl(), adapun kode programnya adalah seperti kode berikut : void tampiltabel() jtable1.setautoresizemode(jtable.auto_resize_off); TableColumn col = null; col=jtable1.getcolumnmodel().getcolumn(0); col.setpreferredwidth(50); col=jtable1.getcolumnmodel().getcolumn(1); col.setpreferredwidth(100); col=jtable1.getcolumnmodel().getcolumn(2); col.setpreferredwidth(100); col=jtable1.getcolumnmodel().getcolumn(3);
col.setpreferredwidth(75); col=jtable1.getcolumnmodel().getcolumn(4); col.setpreferredwidth(100); try String query=null; query = "SELECT * FROM pegawai ORDER By nip"; x.st = x.conn.createstatement(resultset.type_scroll_sensitive, ResultSet.TYPE_SCROLL_SENSITIVE); x.rs = x.st.executequery(query); System.out.println("OK Eksekusi Query Berhasil"); catch (SQLException e) System.err.println("Eksekusi Query Ada kelaslahan."+ e.getmessage()); return; try data.clear(); ResultSetMetaData meta = x.rs.getmetadata(); int kolom = meta.getcolumncount(); while(x.rs.next()) Vector row = new Vector(kolom); for (int i=1; i<=kolom; i++) row.addelement(x.rs.getobject(i)); data.addelement(row); x.st.close(); x.rs.close(); catch (SQLException se) System.err.println( "Kesalahan perintah SQL : " + se.getmessage()); Penjelasan : jtable1.setautoresizemode(jtable.auto_resize_off); TableColumn col = null; Untuk melakukan pengaturan lebar masing-masing kolom, tabel secara default lebar masing-masing kolom akan dibagi rata sama lebarnya. Namun kadang kala tidak semua kolom membutuhkan lebar yang sama. Misalnya NIP lebar hanya 5 karakter tidak sama dengan NAMA yang lebarnya 25 karakter. Untuk mengatur lebar kolom pertama mengeset metod jtable1.setautoresizemode(jtable.auto_resize_off);
col=jtable1.getcolumnmodel().getcolumn(0); col.setpreferredwidth(50); Mengatur lebar pada kolom 0, 50 pixel col=jtable1.getcolumnmodel().getcolumn(1); col.setpreferredwidth(100); Mengatur lebar pada kolom 1, 100 pixel String query=null; query = "SELECT * FROM pegawai ORDER By nip"; x.st = x.conn.createstatement( ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.TYPE_SCROLL_SENSITIVE); x.rs = x.st.executequery(query); Type ResultSet TYPE_FORWARD_ONLY - set hasil tidak digulir yaitu hanya kursor bergerak maju, dari sebelum baris pertama setelah baris terakhir. TYPE_SCROLL_INSENSITIVE - set hasilnya adalah digulir; kursor yang dapat bergerak baik maju dan mundur relatif terhadap posisi saat ini, dan dapat pindah ke posisi absolut. TYPE_SCROLL_SENSITIVE - set hasilnya adalah digulir; kursor yang dapat bergerak baik maju dan mundur relatif terhadap posisi saat ini, dan dapat pindah ke posisi absolut. x.rs = x.st.executequery(query); Menjalankan perintah Query ResultSetMetaData meta = x.rs.getmetadata(); int kolom = meta.getcolumncount(); ResultSetMetaData dapat digunakan untuk melihat informasi pada hasil akses ke tabel. Misal: tipe data kolom jumlah kolom mengambil nilai jumlah kolom hasil dari perintah query while(x.rs.next()) Vector row = new Vector(kolom); for (int i=1; i<=kolom; i++)
row.addelement(x.rs.getobject(i)); data.addelement(row); Melakukan loop, sejumlah rekaman dengan perintah while(x.rs.next()) Vector row = new Vector(kolom); Menciptakan tiap-tiap baris dengan sejumlah kolom, dalam kasus ini ada 5 kolom for (int i=1; i<=kolom; i++) row.addelement(x.rs.getobject(i)); Setiap bari menambah data masing-masing l5 kolom menambahkan ke sel tabel ComboBoxNip di klik data.addelement(row); private void jcomboboxnipmouseclicked(java.awt.event.mouseevent evt) // TODO add your handling code here: tampilkan(jcomboboxnip.getitemat( jcomboboxnip.getselectedindex()).tostring()); Fungi tampilkan void tampilkan(string nip) String sql="select * FROM pegawai WHERE nip='"+nip+"';"; try x.st = x.conn.createstatement(); x.rs = x.st.executequery(sql); catch (SQLException e) return; try while (x.rs.next()) jtextfieldnama.settext(x.rs.getstring("nama").tostring()); jtextfieldalamat.settext( x.rs.getstring("alamat").tostring()); if (x.rs.getstring("seks").equals("l")) jradiobuttonl.setselected(true); else
jradiobuttonp.setselected(true); int i=0; int ketemu=0; while (i<=jcomboboxagama.getitemcount()-1 ) if (x.rs.getstring("agama").equals( jcomboboxagama.getitemat(i).tostring() )) ketemu=i; //meyimpan nilai index i++; // menampilkan hasil ke combo jcomboboxagama.setselectedindex(ketemu); x.rs.close(); x.st.close(); catch (SQLException e) return; Penjelasan : jcomboboxagama.setselectedindex(1); yang tampilkan pada jcomboboxagama ISLAM jcomboboxagama.setselectedindex(2); yang tampilkan pada jcomboboxagama PROTESTAN dan seterusnya Elemen jcomboboxagama int i=0; int ketemu=0; while (i<=jcomboboxagama.getitemcount()-1 ) if (x.rs.getstring("agama").equals( jcomboboxagama.getitemat(i).tostring() )) ketemu=i; //meyimpan nilai index i++; // menampilkan hasil ke kombo jcomboboxagama.setselectedindex(ketemu); if (x.rs.getstring("agama").equals( jcomboboxagama.getitemat(i).tostring() ))
ketemu=i; //meyimpan nilai index Membandingkan x.rs.getstring("agama"). dan jcomboboxagama.getitemat(i). i adalah nilai indeks atau posisi, jika sama berarti ketemu disimpan ke variabel ketemu, lalu ditampilkan dengan perintah jcomboboxagama.setselectedindex(ketemu); Tombol Simpan private void jbuttonsimpanmouseclicked(java.awt.event.mouseevent evt) // TODO add your handling code here: String nip,nama,alamat,jk,agama,sql; nip = jcomboboxnip.getitemat( jcomboboxnip.getselectedindex()).tostring(); nama =jtextfieldnama.gettext(); alamat =jtextfieldalamat.gettext(); agama =jcomboboxagama.getitemat( jcomboboxagama.getselectedindex()).tostring(); if (jradiobuttonl.isselected()==true) jk ="L"; else jk="p"; sql = "UPDATE pegawai SET nama='"+nama+"',"+ "alamat='"+alamat+"',"+ "seks='"+jk+"',"+ "agama='"+agama+"'"+ " WHERE nip='"+nip+"'"; jtextfield1.settext(sql); try x.st = x.conn.createstatement(); x.st.execute(sql); catch (SQLException e) System.out.println("Penyimpanan Gagal "); return; System.out.println("data sudah tersimpan!"); tampiltabel(); jscrollpane1.setviewportview(jtable1); Hasil Keluaran
Program Tombol Selasi private void jbuttonselesaimouseclicked(java.awt.event.mouseevent evt) // TODO add your handling code here: NewJFrameUbahData.this.setVisible(false);