Dalam menampilkan data, terkadang kita menginginkan penampilan data pada tabel dua dimensi. Di Java class yang dapat dipergunakan adalah JTable dari paket javax.swing.JTable seperti gambar dibawah ini:
Berikut ini adalah langkah-langkah yang ditempuh: pembuatan form dari JFrame, melakukan koneksi database dengan Connection, mendapatkan data dengan ResulSet dan menampilkan pada JTable.
Untuk melihat pemakaian JTable, silakan membaca artikel saya Memakai JTable di Java, sedangkan untuk pembuatan form, anda dapat membacanya disini Membuat Form Java Swing. Saya akan melanjutkan pembahasan dengan memodifikasi program di artikel Memakai JTable di Java :
Melakukan Koneksi Database Koneksi data dilakukan dengan class Connection di paket java.sql.Connection.
Fungsi
System.getProperty("user.dir") digunakan agar aplikasi mencari letak database di folder tempat class ShowAccess berada. Contoh: jika ShowAccess.class berada di c:\Programku, maka hasil dari fungsi System.getProperty("user.dir") adalah c:\Programku.
Mendapatkan data dari database
Tampilkan pada JTable
import javax.swing.JTable;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.DatabaseMetaData;
class ShowAccess extends JPanel {
String[] namaKolom;
Object [][] itemData;
Connection koneksi;
public ShowAccess() {
super(new GridLayout(1,0));
koneksiData();
ambilData();
buatTabel();
}
void koneksiData() {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String pathFile = System.getProperty("user.dir");
String filename = pathFile + "beli.mdb";
String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=";
database+= filename.trim() + ";DriverID=22;READONLY=true}";
koneksi = DriverManager.getConnection(database,"","");
} catch (Exception err) {err.printStackTrace();}
}
public static void jalankanForm() {
JFrame frame = new JFrame("Tampilan Data Access");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ShowAccess formTabel = new ShowAccess();
formTabel.setOpaque(true);
frame.setContentPane(formTabel);
frame.pack();
frame.setVisible(true);
}
void ambilData() {
try {
ResultSet rs;
String qry;
Statement stm;
qry = "SELECT KodeGrupBarang, GrupBarang FROM GrupBarang";
/*
parameter ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY digunakan
agar programmer dapat menggeser kursor dengan perintah.
Ini dilakukan agar penggunaan last(), beforeFirst() bisa berjalan
*/
stm = koneksi.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY
);
rs = stm.executeQuery(qry);
//Dapatkan jumlah record (baris)
rs.last();
int baris = rs.getRow();
rs.beforeFirst();
//Dapatkan jumlah kolom
ResultSetMetaData meta = rs.getMetaData();
int kolom = meta.getColumnCount();
namaKolom = new String[kolom];
namaKolom[0] = "Kode";
namaKolom[1] = "Nama Grup";
itemData = new Object[baris][kolom];
int i = 0, y = 0;
while(rs.next()) {
for (i=0; i < kolom; i++) {
itemData[y][i] = rs.getString(i+1);
}
y++;
}
} catch (Exception err) {err.printStackTrace();}
}
void buatTabel() {
//Buat grid data
JTable gridData = new JTable( itemData ,namaKolom);
gridData.setPreferredScrollableViewportSize(new Dimension(500, 70));
gridData.setFillsViewportHeight(true);
//Buat kontainer yang bisa digulung
JScrollPane scrollBar = new JScrollPane(gridData);
//Tambahkan kontainer gulung ke JPanel
add(scrollBar);
}
public static void main(String[] args) {
jalankanForm();
}
}
class ResultSet digunakan untuk melakukan query dan createStatement() diarahkan pada koneksi seperti yang dijalankan pada method koneksiData().
parameter ResultSet.TYPE_SCROLL_INSENSITIVE dan ResultSet.CONCUR_READ_ONLY digunakan karena program ini menggerakkan kursor dengan perintah pada ResultSet last() dan beforeFirst. Kedua perintah ini digunakan untuk mendapatkan jumlah record. Apabila anda tidak memerlukan menggerakkan kursor data, anda cukup menulis perintah terdahulu sebagai berikut:
stm = koneksi.createStatement();
Menampilkan pada JTable
void buatTabel() {
//Buat grid data
JTable gridData = new JTable( itemData ,namaKolom);
gridData.setPreferredScrollableViewportSize(new Dimension(500, 70));
gridData.setFillsViewportHeight(true);
//Buat kontainer yang bisa digulung
JScrollPane scrollBar = new JScrollPane(gridData);
//Tambahkan kontainer gulung ke JPanel
add(scrollBar);
}
Kode Program Selengkapnya:
import javax.swing.JTable;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.DatabaseMetaData;
class ShowAccess extends JPanel {
String[] namaKolom;
Object [][] itemData;
Connection koneksi;
public ShowAccess() {
super(new GridLayout(1,0));
koneksiData();
ambilData();
buatTabel();
}
void koneksiData() {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String pathFile = System.getProperty("user.dir");
String filename = pathFile + "beli.mdb";
String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=";
database+= filename.trim() + ";DriverID=22;READONLY=true}";
koneksi = DriverManager.getConnection(database,"","");
} catch (Exception err) {err.printStackTrace();}
}
public static void jalankanForm() {
JFrame frame = new JFrame("Tampilan Data Access");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ShowAccess formTabel = new ShowAccess();
formTabel.setOpaque(true);
frame.setContentPane(formTabel);
frame.pack();
frame.setVisible(true);
}
void ambilData() {
try {
ResultSet rs;
String qry;
Statement stm;
qry = "SELECT KodeGrupBarang, GrupBarang FROM GrupBarang";
/*
parameter ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY digunakan
agar programmer dapat menggeser kursor dengan perintah.
Ini dilakukan agar penggunaan last(), beforeFirst() bisa berjalan
*/
stm = koneksi.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY
);
rs = stm.executeQuery(qry);
//Dapatkan jumlah record (baris)
rs.last();
int baris = rs.getRow();
rs.beforeFirst();
//Dapatkan jumlah kolom
ResultSetMetaData meta = rs.getMetaData();
int kolom = meta.getColumnCount();
namaKolom = new String[kolom];
namaKolom[0] = "Kode";
namaKolom[1] = "Nama Grup";
itemData = new Object[baris][kolom];
int i = 0, y = 0;
while(rs.next()) {
for (i=0; i < kolom; i++) {
itemData[y][i] = rs.getString(i+1);
}
y++;
}
} catch (Exception err) {err.printStackTrace();}
}
void buatTabel() {
//Buat grid data
JTable gridData = new JTable( itemData ,namaKolom);
gridData.setPreferredScrollableViewportSize(new Dimension(500, 70));
gridData.setFillsViewportHeight(true);
//Buat kontainer yang bisa digulung
JScrollPane scrollBar = new JScrollPane(gridData);
//Tambahkan kontainer gulung ke JPanel
add(scrollBar);
}
public static void main(String[] args) {
jalankanForm();
}
}
Memakai JTable untuk Menampung Query di Java
Rating: 4.5
Diposkan Oleh: Good Dreamer
0 komentar:
Posting Komentar