This is a java jtable mysql database tutorial.

Hello good people.We tackle Java JTable and MySQL Database.We see how to perform all CRUD operations: INSERT,SELECT,UPDATE and CLEAR. Welcome.

SECTION 1 : Our Tools

  1. Netbeans IDE
  2. MySQL Database.I have used Wamp Server’s PhpMyAdmin’s interface to create database and table.The choice is yours.

SECTION 2 : Our Database Class.

Purpose:
  1. Connect to our MySQL Database
  2. Perform for us all CRUD operations,insert,select,update and delete.

SECTION 3 : Our GUI class

Purpose:
  1. Provide GUI interface to facilitate inserting,updating,retrieveing and deleting.
  2. Talk to Database class to get these operations done,in turn receiving a defaulttablemodel instance.
package jtable.db; import javax.swing.JOptionPane; import javax.swing.UIManager; import javax.swing.table.DefaultTableModel; public class Updater extends javax.swing.JFrame { public Updater() { initComponents(); } private void retrieve() { DefaultTableModel dm = new DBUpdater().getData(); jTable1.setModel(dm); } @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jPanel1 = new javax.swing.JPanel(); jPanel2 = new javax.swing.JPanel(); jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable(); nameTxt = new javax.swing.JTextField(); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); retrieveBtn = new javax.swing.JButton(); addBtn = new javax.swing.JButton(); teamTxt = new javax.swing.JTextField(); posTxt = new javax.swing.JTextField(); updateBtn = new javax.swing.JButton(); Delete = new javax.swing.JButton(); clearBtn = new javax.swing.JButton(); jLabel4 = new javax.swing.JLabel(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); jPanel1.setBackground(new java.awt.Color(45, 155, 193)); jTable1.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { }, new String [] { } )); jTable1.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jTable1MouseClicked(evt); } }); jScrollPane1.setViewportView(jTable1); jLabel1.setText("Name"); jLabel2.setText("Position"); jLabel3.setText("Team"); retrieveBtn.setText("Retrieve"); retrieveBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { retrieveBtnActionPerformed(evt); } }); addBtn.setText("Add"); addBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { addBtnActionPerformed(evt); } }); updateBtn.setText("Update"); updateBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { updateBtnActionPerformed(evt); } }); Delete.setText("Delete"); Delete.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { DeleteActionPerformed(evt); } }); clearBtn.setText("Clear"); clearBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { clearBtnActionPerformed(evt); } }); javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 469, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel1) .addComponent(jLabel2)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(nameTxt, javax.swing.GroupLayout.PREFERRED_SIZE, 126, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(posTxt, javax.swing.GroupLayout.PREFERRED_SIZE, 126, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(21, 21, 21)) .addGroup(jPanel2Layout.createSequentialGroup() .addComponent(jLabel3) .addGap(18, 18, 18) .addComponent(teamTxt, javax.swing.GroupLayout.PREFERRED_SIZE, 126, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGap(0, 9, Short.MAX_VALUE)) .addGroup(jPanel2Layout.createSequentialGroup() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addComponent(updateBtn, javax.swing.GroupLayout.PREFERRED_SIZE, 78, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(Delete, javax.swing.GroupLayout.PREFERRED_SIZE, 78, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(jPanel2Layout.createSequentialGroup() .addComponent(addBtn, javax.swing.GroupLayout.PREFERRED_SIZE, 78, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(retrieveBtn, javax.swing.GroupLayout.PREFERRED_SIZE, 78, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap()))) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup() .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(clearBtn, javax.swing.GroupLayout.PREFERRED_SIZE, 78, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(73, 73, 73)) ); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addGap(50, 50, 50) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(jPanel2Layout.createSequentialGroup() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel1) .addComponent(nameTxt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(27, 27, 27) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel2) .addComponent(posTxt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(52, 52, 52)) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel3) .addComponent(teamTxt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGap(66, 66, 66) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(addBtn) .addComponent(retrieveBtn)) .addGap(51, 51, 51) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(updateBtn) .addComponent(Delete))) .addGroup(jPanel2Layout.createSequentialGroup() .addGap(38, 38, 38) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 306, javax.swing.GroupLayout.PREFERRED_SIZE))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 21, Short.MAX_VALUE) .addComponent(clearBtn) .addGap(21, 21, 21)) ); jLabel4.setText("ProgrammingWizards Channel"); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(234, 234, 234) .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 193, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() .addContainerGap() .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap()) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(17, 17, 17) .addComponent(jLabel4) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap()) ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); pack(); }// </editor-fold> //RETRIEVE BUTTON CLICKED private void retrieveBtnActionPerformed(java.awt.event.ActionEvent evt) { retrieve(); } //ADD OR SAVE private void addBtnActionPerformed(java.awt.event.ActionEvent evt) { if (new DBUpdater().add(nameTxt.getText(), posTxt.getText(), teamTxt.getText())) { JOptionPane.showMessageDialog(null, "Successfully Inserted"); //CLEAR TXT nameTxt.setText(""); posTxt.setText(""); teamTxt.setText(""); retrieve(); } else { JOptionPane.showMessageDialog(null, "Not Saved"); } } //SET SELECTED VALUE TO TEXTFIELDS private void jTable1MouseClicked(java.awt.event.MouseEvent evt) { String name = jTable1.getValueAt(jTable1.getSelectedRow(), 1).toString(); String pos = jTable1.getValueAt(jTable1.getSelectedRow(), 2).toString(); String team = jTable1.getValueAt(jTable1.getSelectedRow(), 3).toString(); nameTxt.setText(name); posTxt.setText(pos); teamTxt.setText(team); } //UPDATE private void updateBtnActionPerformed(java.awt.event.ActionEvent evt) { int index = jTable1.getSelectedRow(); String id = jTable1.getValueAt(index, 0).toString(); if (new DBUpdater().update(id, nameTxt.getText(), posTxt.getText(), teamTxt.getText())) { JOptionPane.showMessageDialog(null, "Successfully Updated"); //CLEAR TXT nameTxt.setText(""); posTxt.setText(""); teamTxt.setText(""); retrieve(); } else { JOptionPane.showMessageDialog(null, "Not Updated"); } } //DELETE private void DeleteActionPerformed(java.awt.event.ActionEvent evt) { String[] options = {"Yes", "No"}; int answ = JOptionPane.showOptionDialog(null, "Sure To Delete??", "Delete Confirm", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[1]); if (answ == 0) { int index = jTable1.getSelectedRow(); String id = jTable1.getValueAt(index, 0).toString(); if (new DBUpdater().delete(id)) { JOptionPane.showMessageDialog(null, "Deleted Updated"); //CLEAR TXT nameTxt.setText(""); posTxt.setText(""); teamTxt.setText(""); retrieve(); } else { JOptionPane.showMessageDialog(null, "Not Deleted"); } } } //CLEAR BUTTON CLICKED private void clearBtnActionPerformed(java.awt.event.ActionEvent evt) { jTable1.setModel(new DefaultTableModel()); } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { } }); } // Variables declaration - do not modify private javax.swing.JButton Delete; private javax.swing.JButton addBtn; private javax.swing.JButton clearBtn; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTable jTable1; private javax.swing.JTextField nameTxt; private javax.swing.JTextField posTxt; private javax.swing.JButton retrieveBtn; private javax.swing.JTextField teamTxt; private javax.swing.JButton updateBtn; // End of variables declaration } 
[embedyt] http://www.youtube.com/watch?v=B071LpsqARw[/embedyt]

SECTION 3 : Our Main class

Purpose:
  1. Entry point to our application.
  2. Start off GUI.
package jtable.db; public class JTableDB { //MAIN CLASS public static void main(String[] args) { //CALL UPDATER CLASS WHICH IS OUR GUI CLASS new Updater().setVisible(true); } } 

Best Regards.