my code works fine but I am getting this exception a lot and it’s causing a little lag … I suspect this part to produce the exception
try {
try {
rs = dbConnection.getStatement().executeQuery("SELECT * FROM healthgym.member WHERE member_id = " + id);
rs.next();
} catch (SQLException ex) {
Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, null, ex);
}
m.setMember_id(rs.getInt("member_id"));
m.setRec_id(rs.getInt("rec_id"));
m.setTrainer_id(rs.getInt("trainer_id"));
m.setFname(rs.getString("fname"));
m.setLname(rs.getString("lname"));
m.setMname(rs.getString("mname"));
m.setEmail(rs.getString("email"));
m.setPhoneNo(rs.getInt("phoneno"));
m.setAge(rs.getInt("age"));............
I use the m object later to fill some text fields
Edit 1 : I am still getting that exception … here is what happens exactly … I select a row in Jtable and I press the edit button the exception is thrown but it works fine
here is what’s called when i press the edit button
private void editButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
int id = ((Number) model.getValueAt(jTable1.getSelectedRow(), 0)).intValue() ;
System.out.println(id);
m = new Member();
c.getMember(m,id);
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new EditMember(c,model,m).setVisible(true);
}
});
}
And EditMember is a GUI here is its constructor..
public class EditMember extends javax.swing.JFrame {
/** Creates new form EditMember */
public EditMember(Controller c, ResultSetTableModel model , Member m) {
initComponents();
this.c = c;
this.model = model ;
this.m = m ;
memberID.setText(Integer.toString(m.getMember_id()));
recID.setText(Integer.toString(m.getRec_id()));
trainerID.setText(Integer.toString(m.getTrainer_id()));
fName.setText(m.getFname());
lName.setText(m.getLname());.......
Edit 2 :
That;s where the exception happens :
public Object getValueAt( int row, int column )
throws IllegalStateException
{
// ensure database connection is available
if ( !dbConnection.isConnectedToDatabase() )
throw new IllegalStateException( "Not Connected to Database" );
// obtain a value at specified ResultSet row and column
try
{
resultSet.absolute( row + 1 );
return resultSet.getObject( column + 1 );
} // end try
catch ( SQLException sqlException )
{
System.out.println("Exception from here dude");
sqlException.printStackTrace();
} // end catch
I guess the problem is because I am using the same resultset that I used before to construct the JTable.
it should be
So all set value will be in try block.
Why you are getting error ?
Because sometime when result is empty the result set will be closed by rs.next()
If you put it in while {where there are multiple row in result of query} or if {when you accept only one row in query output }.