jdbc - Java Move to next and previous records -


with code below can move last record of database , first record of database. create next() method move next record. move first record second record show error(sqlexception result set after last row. can't continue project until can move records next , previous. pleas

public void createresultset(){     try{         stmt = connect.createstatement(resultset.type_scroll_insensitive,resultset.concur_updatable);         string sql = "select * oautoparts_product";         stmt.executequery(sql);         rs = stmt.getresultset();      }catch(exception e){          joptionpane.showmessagedialog(null, e);     }  }   public void first(){     createresultset();    try{             rs.first();             string add1 = rs.getnstring("product_id");             txtpartnumber.settext(add1);             string add2 = rs.getnstring("product_name");             txtpartname.settext(add2);             string add3 = rs.getnstring("cost");             txtprice.settext(add3);     }catch(exception e){        joptionpane.showmessagedialog(null, e);    }  }   public void next(){      createresultset();      try{                                          while(rs.next()){              rs.next();              string add1 = rs.getnstring("product_id");             txtpartnumber.settext(add1);             string add2 = rs.getnstring("product_name");             txtpartname.settext(add2);             string add3 = rs.getnstring("cost");             txtprice.settext(add3);          }      }catch(exception e){           joptionpane.showmessagedialog(null, e);      }    }    public void last(){     createresultset();    try{         rs.last();             string add1 = rs.getnstring("product_id");             txtpartnumber.settext(add1);             string add2 = rs.getnstring("product_name");             txtpartname.settext(add2);             string add3 = rs.getnstring("cost");             txtprice.settext(add3);     }catch(exception e){        joptionpane.showmessagedialog(null, e);    }  }  /**  * method called within constructor initialize form.  * warning: not modify code. content of method  * regenerated form editor.  */ @suppresswarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="generated code">                           private void initcomponents() {      txtpartnumber = new javax.swing.jtextfield();     txtpartname = new javax.swing.jtextfield();     txtprice = new javax.swing.jtextfield();     btnfirst = new javax.swing.jbutton();     btnlast = new javax.swing.jbutton();     btnnext = new javax.swing.jbutton();      setdefaultcloseoperation(javax.swing.windowconstants.exit_on_close);      btnfirst.settext("first");     btnfirst.addactionlistener(new java.awt.event.actionlistener() {         public void actionperformed(java.awt.event.actionevent evt) {             btnfirstactionperformed(evt);         }     });      btnlast.settext("last");     btnlast.addactionlistener(new java.awt.event.actionlistener() {         public void actionperformed(java.awt.event.actionevent evt) {             btnlastactionperformed(evt);         }     });      btnnext.settext("next");     btnnext.addactionlistener(new java.awt.event.actionlistener() {         public void actionperformed(java.awt.event.actionevent evt) {             btnnextactionperformed(evt);         }     });      javax.swing.grouplayout layout = new javax.swing.grouplayout(getcontentpane());     getcontentpane().setlayout(layout);     layout.sethorizontalgroup(         layout.createparallelgroup(javax.swing.grouplayout.alignment.leading)         .addgroup(layout.createsequentialgroup()             .addgap(144, 144, 144)             .addgroup(layout.createparallelgroup(javax.swing.grouplayout.alignment.trailing)                 .addcomponent(btnfirst, javax.swing.grouplayout.preferred_size, 139, javax.swing.grouplayout.preferred_size)                 .addgroup(layout.createparallelgroup(javax.swing.grouplayout.alignment.leading)                     .addcomponent(txtpartnumber, javax.swing.grouplayout.preferred_size, 152, javax.swing.grouplayout.preferred_size)                     .addcomponent(txtpartname, javax.swing.grouplayout.preferred_size, 152, javax.swing.grouplayout.preferred_size)                     .addcomponent(txtprice, javax.swing.grouplayout.preferred_size, 152, javax.swing.grouplayout.preferred_size))                 .addcomponent(btnnext, javax.swing.grouplayout.preferred_size, 139, javax.swing.grouplayout.preferred_size))             .addpreferredgap(javax.swing.layoutstyle.componentplacement.unrelated)             .addcomponent(btnlast, javax.swing.grouplayout.preferred_size, 139, javax.swing.grouplayout.preferred_size)             .addcontainergap(89, short.max_value))     );     layout.setverticalgroup(         layout.createparallelgroup(javax.swing.grouplayout.alignment.leading)         .addgroup(layout.createsequentialgroup()             .addgap(78, 78, 78)             .addcomponent(txtpartnumber, javax.swing.grouplayout.preferred_size, 53, javax.swing.grouplayout.preferred_size)             .addgap(18, 18, 18)             .addcomponent(txtpartname, javax.swing.grouplayout.preferred_size, 53, javax.swing.grouplayout.preferred_size)             .addgap(18, 18, 18)             .addcomponent(txtprice, javax.swing.grouplayout.preferred_size, 53, javax.swing.grouplayout.preferred_size)             .addgap(31, 31, 31)             .addgroup(layout.createparallelgroup(javax.swing.grouplayout.alignment.baseline)                 .addcomponent(btnfirst, javax.swing.grouplayout.preferred_size, 44, javax.swing.grouplayout.preferred_size)                 .addcomponent(btnlast, javax.swing.grouplayout.preferred_size, 44, javax.swing.grouplayout.preferred_size))             .addgap(31, 31, 31)             .addcomponent(btnnext, javax.swing.grouplayout.preferred_size, 44, javax.swing.grouplayout.preferred_size)             .addcontainergap(javax.swing.grouplayout.default_size, short.max_value))     );      pack(); }// </editor-fold>                          private void btnlastactionperformed(java.awt.event.actionevent evt) {                                             last(); }                                         private void btnfirstactionperformed(java.awt.event.actionevent evt) {                                              first(); }                                          private void btnnextactionperformed(java.awt.event.actionevent evt) {                                             next(); }              

try this:

private void updateform() {     string add1 = rs.getnstring("product_id");     txtpartnumber.settext(add1);     string add2 = rs.getnstring("product_name");     txtpartname.settext(add2);     string add3 = rs.getnstring("cost");     txtprice.settext(add3); }  public void first() {     try {         if (rs.first()) {             updateform();         }     } catch (exception e) {         joptionpane.showmessagedialog(null, e);     } }  public void next() {     try {         if (rs.next()) {             updateform();         }     } catch (exception e) {         joptionpane.showmessagedialog(null, e);     }  }  public void last() {     try {         if (rs.last()) {             updateform();         }     } catch (exception e) {         joptionpane.showmessagedialog(null, e);     }  } 

and move createresultset() in constructor of class, gets created once.

i've factored out form update in private method, gets called in first, next , last method.

i have this: here createresultset() should go?

public mainform() {     initcomponents();     connect = dbconnection.dbconnection();     createresultset();   }  public void createresultset(){     try{          stmt = connect.createstatement(resultset.type_scroll_insensitive,resultset.concur_updatable);         string sql = "select * oautoparts_product";         stmt.executequery(sql);         rs = stmt.getresultset();      }catch(exception e){          joptionpane.showmessagedialog(null, e);     }  } 

Comments

Popular posts from this blog

jOOQ update returning clause with Oracle -

java - Warning equals/hashCode on @Data annotation lombok with inheritance -

java - BasicPathUsageException: Cannot join to attribute of basic type -