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
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
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); }