Note that there are some explanatory texts on larger screens.

plurals
  1. POhow to refresh JTable after after insertion updation or deletion
    text
    copied!<p>I want to refresh JTable with the newly added or modified information in the DB Currently it only works once when I click <code>showDetails</code> or after inserting 1 record in the DB.</p> <p>It shows the information only once not again and again every time a new entry is added or deleted</p> <p><strong>Code is Of GUIClass</strong></p> <pre><code>package studentmanagementsystem.gui; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.sql.*; import java.util.Vector; import studentmanagementsystem.entity.*; import studentmanagementsystem.backend.*; public class StudentPersonalGui extends JFrame implements ActionListener{ JLabel heading,lenroll,lDOB,lgender,lmobileno,lemailid,lfathername,lname; JLabel lmothername,laddress; JTextField tenroll,tDOB,tmobileno,temailid,tfathername,tname; JTextField tmothername,taddress; JComboBox&lt;String&gt; cgender; JButton insert,retrieve; JButton reset; JPanel p1,dataPanel; String gender[]={"Male","Female"}; Font f1=new Font("BOLD",Font.ITALIC,25); Color c1=Color.white; Color c2=Color.lightGray ; Color c3=new Color(50,100,10); boolean insert_status; StudentPersonal sp; public StudentPersonalGui(){ setLayout(null); heading=new JLabel("Student Personal Record"); heading.setFont(f1); heading.setForeground(c3); p1=new JPanel(); p1.add(heading); p1.setBackground(c2); p1.setLayout(null); p1.setBounds(200,20,400,60); heading.setBounds(50,10,300,30); add(p1); lenroll=new JLabel("Enrollment No.:"); lname=new JLabel("Student Name:"); lDOB=new JLabel("Date of Birth:"); lmobileno=new JLabel("Mobile No.:"); lemailid=new JLabel("Email Id:"); lgender=new JLabel("Gender:"); lfathername=new JLabel("Father Name:"); lmothername=new JLabel("Mother Name:"); laddress=new JLabel("Address:"); tenroll=new JTextField(12); tname=new JTextField(12); tDOB=new JTextField(12); tmobileno=new JTextField(12); temailid=new JTextField(12); tfathername=new JTextField(12); tmothername=new JTextField(12); taddress=new JTextField(12); cgender=new JComboBox&lt;String&gt;(gender); insert=new JButton("Add Record"); retrieve=new JButton("View Details"); reset=new JButton("Reset"); add(lenroll); add(lDOB); add(lmobileno); add(lgender); add(lemailid); add(lfathername); add(lmothername); add(lname); add(laddress); add(tenroll); add(tDOB); add(tmobileno); add(cgender); add(temailid); add(tfathername); add(tmothername); add(tname); add(taddress); add(insert); add(retrieve); add(reset); lenroll.setBounds(100,100,100,20); tenroll.setBounds(220,100,150,20); lname.setBounds(450,100,100,20); tname.setBounds(570,100,200,20); lDOB.setBounds(100,130,100,20); tDOB.setBounds(220,130,120,20); lgender.setBounds(450,130,100,20); cgender.setBounds(570,130,100,20); lmobileno.setBounds(100,160,100,20); tmobileno.setBounds(220,160,120,20); lemailid.setBounds(450,160,200,20); temailid.setBounds(550,160,200,20); lfathername.setBounds(100,190,100,20); tfathername.setBounds(220,190,200,20); lmothername.setBounds(100,220,100,20); tmothername.setBounds(220,220,200,20); laddress.setBounds(100,250,200,20); taddress.setBounds(220,250,350,20); insert.setBounds(150,300,150,20); reset.setBounds(350,300,80,20); retrieve.setBounds(480,300,150,20); insert.addActionListener(this); reset.addActionListener(this); retrieve.addActionListener(this); dataPanel=new JPanel(); dataPanel.setBounds(50,350,730,250); dataPanel.setLayout(new BorderLayout()); dataPanel.setBackground(Color.WHITE); add(dataPanel); setResizable(false); setVisible(true); setSize(850,700); setTitle("Student Record Management"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void actionPerformed(ActionEvent ae){ if(ae.getActionCommand()=="Add Record"){ sp=new StudentPersonal(); String sDOB=tDOB.getText(); String sname=tname.getText(); String gender=(String)cgender.getSelectedItem(); String emailid=temailid.getText(); String fathername=tfathername.getText(); String mothername=tmothername.getText(); String address=taddress.getText(); long enrollno=0; long mobileno=0; try{ enrollno=Long.parseLong(tenroll.getText()); mobileno=Long.parseLong(tmobileno.getText()); }catch(NumberFormatException nfe){ JOptionPane.showMessageDialog(null,"Alphabets cann't be inserted in phone field","Information", JOptionPane.ERROR_MESSAGE); } sp.setSenrollno(enrollno); sp.setSname(sname); sp.setSDOB(sDOB); sp.setSgender(gender); sp.setSmobileno(mobileno); sp.setSemailid(emailid); sp.setSfathername(fathername); sp.setSmothername(mothername); sp.setSaddress(address); insert_status=new CRUDOperations().insert(sp); if(insert_status){ JOptionPane.showMessageDialog(null,"Record Inserted Successfully","Information", JOptionPane.INFORMATION_MESSAGE); showData(); } } else if(ae.getActionCommand()=="View Details"){ showData(); } else{ tenroll.setText(""); tDOB.setText(""); tmobileno.setText(""); temailid.setText(""); tfathername.setText(""); tname.setText(""); tmothername.setText(""); taddress.setText(""); cgender.setSelectedIndex(0); } } public void showData(){ JTable table; JScrollPane pane; Vector&lt;String&gt; columnname=new Vector&lt;String&gt;(); Vector&lt;Vector&lt;String&gt;&gt; rowData=new Vector&lt;Vector&lt;String&gt;&gt;(); Vector&lt;String&gt; student; try{ ResultSet rs=new CRUDOperations().retrieve_Data(); if(rs!=null){ ResultSetMetaData rsmd=rs.getMetaData(); int columnCount=rsmd.getColumnCount(); for(int j=1;j&lt;=columnCount;j++){ columnname.add(rsmd.getColumnName(j)); } while(rs.next()){ student=new Vector&lt;String&gt;(); student.add(rs.getString(1)); student.add(rs.getString(2)); student.add(rs.getString(3)); student.add(rs.getString(4)); student.add(rs.getString(5)); student.add(rs.getString(6)); student.add(rs.getString(7)); student.add(rs.getString(8)); student.add(rs.getString(9)); rowData.add(student); } rs.close(); table = new JTable(rowData,columnname); pane=new JScrollPane(table); dataPanel.add(pane,BorderLayout.CENTER); add(dataPanel); validate(); repaint(); } }catch(SQLException sqle){ } } } </code></pre> <p>CRUDOperation Class is used for DB Operation on the ShowDetails button click a CRUDOperation function retrieve_Data is called which returns the resultSet which is used to set the JTable Data</p> <pre><code>package studentmanagementsystem.backend; import java.awt.Color; import java.sql.*; import java.util.Vector; import studentmanagementsystem.entity.*; import studentmanagementsystem.gui.*; public class CRUDOperations{ Connection con; PreparedStatement stat; StudentPersonal sp; boolean insert_status,delete_status,update_status,login_status; public boolean insert(StudentPersonal sp){ con=new ConnectionManager().makeConn(); try{ long enrollno=sp.getSenrollno(); String sname=sp.getSname(); String sDOB=sp.getSDOB(); String gender=sp.getSgender(); String emailid=sp.getSemailid(); long mobileno=sp.getSmobileno(); String fathername=sp.getSfathername(); String mothername=sp.getSmothername(); String address=sp.getSaddress(); String insertSP="insert into StudentPersonal values(?,?,?,?,?,?,?,?,?)"; stat=con.prepareStatement(insertSP); stat.setLong(1,enrollno); stat.setString(2,sname); stat.setString(3,sDOB); stat.setString(4,gender); stat.setLong(5,mobileno); stat.setString(6,emailid); stat.setString(7,fathername); stat.setString(8,mothername); stat.setString(9,address); int i=stat.executeUpdate(); if(i&gt;0){ insert_status=true; } }catch(Exception e){ } return insert_status; } public ResultSet retrieve_Data(){ ResultSet rs=null; try{ con=new ConnectionManager().makeConn(); String retrieve="select * from StudentPersonal"; stat=con.prepareStatement(retrieve); rs=stat.executeQuery(); }catch(SQLException sql){ System.out.println(sql); } return rs; } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload