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 :

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 :

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 :

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 :


//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


//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


//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 :

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 426 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.