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 JFrame ButtonGroup
Property Class setTitle() Variable Name
Nilai NewJFrameUbahData Mengubah Data Pegwai buttonGroupSeks
Kuliah Pemrograman Desktop Java [Badiyanto, S..Kom. M.Kom] …………………
JButton JButton JComboBox
JRadioButton JRadioButton JComboBox JTextField JTextField
Variable Name SetText() Variable Name SetText() Variabel Name model
Variable Name Variable Name Variable Name model Variable Name SetText() Variable Name SetText()
jButtonSelesai Selesai jButtonSimpan Simpan jComboBoxAgama --Pilihan--ISLAM PROTESTAN KATHOLIK HINDU BUDHA jRadioButtonL jRadioButtonP jComboBoxNip kosongkan JTextField jTextFieldNama “” 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 :
Kuliah Pemrograman Desktop Java [Badiyanto, S..Kom. M.Kom] …………………
Diubah menjadi, jTable.setModel(new javax.swing.DefaultTableModel( data, judulKolom ));
Seperti telihat gambar di bawah ini :
Kuliah Pemrograman Desktop Java [Badiyanto, S..Kom. M.Kom] …………………
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;
Kuliah Pemrograman Desktop Java [Badiyanto, S..Kom. M.Kom] …………………
public class NewJFrameUbahData extends javax.swing.JFrame { NewClassKoneksi x; private Vector
> 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> (); 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> 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");
Kuliah Pemrograman Desktop Java [Badiyanto, S..Kom. M.Kom] …………………
judulKolom.add("Seks"); judulKolom.add("Agama");
Mengisi nama judul kolom pada kolom 0 “Nip”, kolom 1 “Nama” dan seterusnya. data = new Vector> ();
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);
Kuliah Pemrograman Desktop Java [Badiyanto, S..Kom. M.Kom] …………………
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);
Kuliah Pemrograman Desktop Java [Badiyanto, S..Kom. M.Kom] …………………
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++)
Kuliah Pemrograman Desktop Java [Badiyanto, S..Kom. M.Kom] …………………
{ row.addElement(x.rs.getObject(i)); } data.addElement(row); }
Melakukan loop, sejumlah rekaman dengan perintah Vector row = new
while(x.rs.next())
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 data.addElement(row);
menambahkan ke sel tabel ComboBoxNip di klik 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
Kuliah Pemrograman Desktop Java [Badiyanto, S..Kom. M.Kom] …………………
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() )) { Kuliah Pemrograman Desktop Java [Badiyanto, S..Kom. M.Kom] …………………
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
Kuliah Pemrograman Desktop Java [Badiyanto, S..Kom. M.Kom] …………………
Program Tombol Selasi private void jButtonSelesaiMouseClicked(java.awt.event.MouseEvent evt) { // TODO add your handling code here: NewJFrameUbahData.this.setVisible(false); }
Kuliah Pemrograman Desktop Java [Badiyanto, S..Kom. M.Kom] …………………