Memunculkan Pembacaan Database ke Komponen JTable

Oleh : Reza Ervani

بسم الله الرحمن الرحيم

Pertama-tama kita buatkan form dulu seperti tampak pada gambar di bawah ini :

Screenshot from 2014-06-10 10:27:42

Selanjutnya kita buat databasenya dengan phpmyadmin seperti tampak dibawah ini :

Screenshot from 2014-06-10 10:53:24

Kita akan menggunakan DefaultTableModel untuk menampilkan data dari database

Kodenya akan tampak seperti berikut :

1
2
3
4
DefaultTableModel model = new DefaultTableModel();
table = new JTable(model);
panel.add(table, BorderLayout.CENTER);
panel.add(table.getTableHeader(), BorderLayout.PAGE_START);

Tentu saja kita akan letakkan kode tersebut sebelum button yang sudah memiliki ActionHandler. Asumsinya koneksi dan statement query sudah kita buat, sehingga tampak seperti berikut :

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
DefaultTableModel model = new DefaultTableModel();
table = new JTable(model);
panel.add(table, BorderLayout.CENTER);
panel.add(table.getTableHeader(), BorderLayout.PAGE_START);
 
JButton btnTampilkanDataTerbaru = new JButton("TAMPILKAN DATA TERBARU");
btnTampilkanDataTerbaru.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
try {
//Memuat Driver JDBC MySQL
Class.forName("com.mysql.jdbc.Driver");
 
//Melakukan Koneksi
koneksi = DriverManager.getConnection("jdbc:mysql://localhost/herbal","root", "fatihrantissi");
 
statement = koneksi.createStatement();
resultset = statement.executeQuery("SELECT * FROM datastok");

Lalu kita buatkan lima kolom seperti berikut :

1
2
3
4
5
model.addColumn("ID");
model.addColumn("Nama Barang");
model.addColumn("Harga");
model.addColumn("Stok");
model.addColumn("Keterangan");

Sekarang mari kita tampilkan baris pertama dengan kode seperti berikut :

1
2
3
4
5
//menavigasi resultset ke baris pertama
resultset.first();
 
//menampilkan data dari baris pertama database
model.insertRow(0, new Object[]{resultset.getInt(1), resultset.getString(2), resultset.getInt(3), resultset.getInt(4), resultset.getString(5)});

Jika dijalankan maka program kita akan tampak seperti berikut :

Screenshot from 2014-06-10 11:08:45

Kini kita pindahkan navigasi result set ke baris berikutnya dan menampilkan hasilnya ke baris kedua di tabel

01
02
03
04
05
06
07
08
09
10
11
//menavigasi resultset ke baris berikutnya
resultset.next();
 
//menampilkan data dari baris kedua database
model.insertRow(1, new Object[]{resultset.getInt(1), resultset.getString(2), resultset.getInt(3), resultset.getInt(4), resultset.getString(5)});
 
//menavigasi resultset ke baris berikutnya
resultset.next();
 
//menampilkan data dari baris ketiga database
model.insertRow(2, new Object[]{resultset.getInt(1), resultset.getString(2), resultset.getInt(3), resultset.getInt(4), resultset.getString(5)});

Jika dijalankan maka program kita akan tampak seperti gambar berikut :

Screenshot from 2014-06-10 11:13:43

Dan terakhir kita pindahkan kursor ke baris terakhir database dan menampilkannya di baris ke-4 JTable

1
2
3
4
5
6
7
//menavigasi kursor result set ke baris terakhir database
 
resultset.last();
 
//menampilkan hasil dari resultset ke baris ke-4 JTable
 
model.insertRow(3, new Object[]{resultset.getInt(1), resultset.getString(2), resultset.getInt(3), resultset.getInt(4), resultset.getString(5)});

Jika kita jalankan maka program kita akan tampak seperti berikut :

Screenshot from 2014-06-10 11:15:22

Kode lengkapnya tampak seperti berikut :

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
package com.eclipseprogramming.BacaDatabase;
 
import java.awt.BorderLayout;
import java.awt.EventQueue;
 
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
 
import java.awt.Font;
 
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
 
import java.awt.FlowLayout;
import java.awt.GridLayout;
 
import javax.swing.border.TitledBorder;
 
import org.eclipse.wb.swing.FocusTraversalOnArray;
 
import java.awt.Component;
 
import javax.swing.JButton;
 
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
 
public class Tampilan extends JFrame {
 
 private JPanel contentPane;
 private JTable table;
 
 /**
 * Field untuk Database
 */
 
 private Connection koneksi = null;
 private Statement statement = null;
 private ResultSet resultset = null;
 
 /**
 * Launch the application.
 */
 public static void main(String[] args) {
 EventQueue.invokeLater(new Runnable() {
 public void run() {
 try {
 Tampilan frame = new Tampilan();
 frame.setVisible(true);
 } catch (Exception e) {
 e.printStackTrace();
 }
 }
 });
 }
 
 /**
 * Create the frame.
 */
 public Tampilan() {
 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 setBounds(100, 100, 731, 364);
 contentPane = new JPanel();
 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
 setContentPane(contentPane);
 contentPane.setLayout(null);
 
 JLabel lblContohMenampilkanIsi = new JLabel("Contoh Menampilkan Isi Database di Swing");
 lblContohMenampilkanIsi.setBounds(184, 0, 369, 32);
 lblContohMenampilkanIsi.setFont(new Font("PT Sans Narrow", Font.BOLD, 24));
 contentPane.add(lblContohMenampilkanIsi);
 
 JLabel lblEclipseprogrammingcom = new JLabel("programming.rezaervani.com");
 lblEclipseprogrammingcom.setBounds(279, 30, 178, 15);
 contentPane.add(lblEclipseprogrammingcom);
 
 JLabel lblStatus = new JLabel("STATUS");
 lblStatus.setBounds(17, 249, 266, 39);
 contentPane.add(lblStatus);
 
 JPanel panel = new JPanel();
 panel.setBorder(new TitledBorder(null, "Data Produk", TitledBorder.LEADING, TitledBorder.TOP, null, null));
 panel.setBounds(7, 57, 721, 182);
 contentPane.add(panel);
 panel.setLayout(new BorderLayout(0, 0));
 
 DefaultTableModel model = new DefaultTableModel();
 table = new JTable(model);
 panel.add(table, BorderLayout.CENTER);
 panel.add(table.getTableHeader(), BorderLayout.PAGE_START);
 
 JButton btnTampilkanDataTerbaru = new JButton("TAMPILKAN DATA TERBARU");
 btnTampilkanDataTerbaru.addMouseListener(new MouseAdapter() {
 @Override
 public void mouseClicked(MouseEvent e) {
 try {
 //Memuat Driver JDBC MySQL
 Class.forName("com.mysql.jdbc.Driver");
 
 //Melakukan Koneksi
 koneksi = DriverManager.getConnection("jdbc:mysql://localhost/herbal","root", "fatihrantissi");
 
 statement = koneksi.createStatement();
 resultset = statement.executeQuery("SELECT * FROM datastok");
 
 model.addColumn("ID");
 model.addColumn("Nama Barang");
 model.addColumn("Harga");
 model.addColumn("Stok");
 model.addColumn("Keterangan");
 
 resultset.first();
 model.insertRow(0, new Object[]{resultset.getInt(1), resultset.getString(2), resultset.getInt(3), resultset.getInt(4), resultset.getString(5)});
 
 resultset.next();
 model.insertRow(1, new Object[]{resultset.getInt(1), resultset.getString(2), resultset.getInt(3), resultset.getInt(4), resultset.getString(5)});
 
 resultset.next();
 model.insertRow(2, new Object[]{resultset.getInt(1), resultset.getString(2), resultset.getInt(3), resultset.getInt(4), resultset.getString(5)});
 
 resultset.last();
 model.insertRow(3, new Object[]{resultset.getInt(1), resultset.getString(2), resultset.getInt(3), resultset.getInt(4), resultset.getString(5)});
 
 lblStatus.setText("Koneksi Berhasil");
 } catch (Exception e1) {
 }
 }
 });
 btnTampilkanDataTerbaru.setBounds(488, 244, 229, 25);
 contentPane.add(btnTampilkanDataTerbaru);
 
 contentPane.setFocusTraversalPolicy(new FocusTraversalOnArray(new Component[]{lblContohMenampilkanIsi, lblEclipseprogrammingcom, panel, table}));
 
}
 }

Sengaja kita tidak menggunakan iterasi untuk lebih memahami tentang navigasi resultset.

Jangan lupa pula untuk melengkapi kode diatas dengan closing connection, statement dan resultset.

Selamat bereksperimen (reza@rumahilmu.or.id)

About Reza Ervani 431 Articles
Adalah pendiri programming.rezaervani.com -

Be the first to comment

Leave a Reply

Your email address will not be published.


*


This site uses Akismet to reduce spam. Learn how your comment data is processed.