
Oleh : Reza Ervani
بسم الله الرحمن الرحيم
Pertama-tama kita buatkan form dulu seperti tampak pada gambar di bawah ini :
Selanjutnya kita buat databasenya dengan phpmyadmin seperti tampak dibawah ini :
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 :
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 :
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 :
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)
Leave a Reply