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 :

[code language=”java”]
DefaultTableModel model = new DefaultTableModel();
table = new JTable(model);
panel.add(table, BorderLayout.CENTER);
panel.add(table.getTableHeader(), BorderLayout.PAGE_START);

[/code]

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 :

[code language=”java”]
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");

[/code]

Lalu kita buatkan lima kolom seperti berikut :

[code language=”java”]
model.addColumn("ID");
model.addColumn("Nama Barang");
model.addColumn("Harga");
model.addColumn("Stok");
model.addColumn("Keterangan");

[/code]

Sekarang mari kita tampilkan baris pertama dengan kode seperti berikut :

[code language=”java”]

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

[/code]

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

[code language=”java”]

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

[/code]

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

[code language=”java”]

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

[/code]

Jika kita jalankan maka program kita akan tampak seperti berikut :

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

Kode lengkapnya tampak seperti berikut :

[code language=”java”]
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}));

}
}

[/code]

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