java - Error: ORA-00900 Invalid SQLStatement but statement still works as intended -


i created gui can alter , retrieve data database. however, buttons throw sqlexception though task done. (for example, give me error still insert correctly database.

here code:

string sqluser = e.getactioncommand(); string sql; preparedstatement stmt; try{     if(sqluser.equals("save record"))                 {                     resultset rs;                     sql = "insert table_name (name, id, result, date, date2) values (?,?,?,?,?)";                     stmt = con.preparestatement(sql);                     stmt.setstring(1, textfield.gettext());                     stmt.setint(2, integer.parseint(textfield_1.gettext()));                     stmt.setstring(3, textfield_2.gettext());                     stmt.setdate(4, new java.sql.date(system.currenttimemillis()));                     stmt.setdate(5, new java.sql.date(system.currenttimemillis()));                     rs = stmt.executequery();                     updateui(rs);                     con.commit();                 }     else if(sqluser.equals("save update"))                 {                     resultset rs;                     sql = "update table_name set result = ? , date = ?, date2 = ? name = ? , id = ?";                     stmt = con.preparestatement(sql);                     stmt.setstring(4, textfield.gettext());                     stmt.setint(5, integer.parseint(textfield_1.gettext()));                     stmt.setstring(1, textfield_2.gettext());                     stmt.setdate(2, new java.sql.date(system.currenttimemillis()));                     stmt.setdate(3, new java.sql.date(system.currenttimemillis()));                     rs = stmt.executequery();                     updateui(rs);                     con.commit();                 } } catch (sqlexception err) {     joptionpane.showmessagedialog(null,err.getmessage()); } 

the updateui method follows:

public void updateui(resultset rs)     {         try         {             string strcdate = dateformat.format(rs.getdate("date"));             string strladate = dateformat.format(rs.getdate("date2"));              textfield.settext(rs.getstring("name"));             textfield_1.settext(integer.tostring(rs.getint("id")));             textfield_2.settext(rs.getstring("result"));             lblcalculationdate.settext("date: " + strcdate);             lbllastaccessdate.settext("date2: " + strladate);         }         catch(sqlexception err)         {             joptionpane.showmessagedialog(null,err.getmessage());         }     } 

the dateformat (dont think matters much):

private dateformat dateformat = new simpledateformat("yyyy-mm-dd"); 

  • remove con.commit(); db connection default autocommit.
  • you can use commit() when set con.setautocommit(false);
  • the insertion execution doesn't return resultset remove rs = stmt.executequery(); , instead change updateui method accept 2 dates paramters

full new code:

    string sqluser = e.getactioncommand();     string sql;     preparedstatement stmt;     try{         int id = integer.parseint(textfield_1.gettext());         java.sql.date date = new java.sql.date(system.currenttimemillis());                         java.sql.date date2 = new java.sql.date(system.currenttimemillis());         if(sqluser.equals("save record"))                     {                         resultset rs;                          sql = "insert table_name (name, id, result, date, date2) values (?,?,?,?,?)";                         stmt = con.preparestatement(sql);                         stmt.setstring(1, textfield.gettext());                         stmt.setint(2, id);                         stmt.setstring(3, textfield_2.gettext());                         stmt.setdate(4,date );                         stmt.setdate(5,date2);                         // old: rs = stmt.executequery();                         // old: updateui(rs);                         stmt.executeupdate();                         updateui(id,  textfield.gettext(),textfield_2.gettext(),date,date2 );                         // old: con.commit();                     }         else if(sqluser.equals("save update"))                     {                         resultset rs;                         sql = "update table_name set result = ? , date = ?, date2 = ? name = ? , id = ?";                         stmt = con.preparestatement(sql);                         stmt.setstring(4, textfield.gettext());                         stmt.setint(5, id);                         stmt.setstring(1, textfield_2.gettext());                         stmt.setdate(2, date);                         stmt.setdate(3, date2);                         // old: rs = stmt.executequery();                         // old: updateui(rs);                         stmt.executeupdate();                         updateui(id,  textfield.gettext(),textfield_2.gettext(),date,date2 );                         // old: con.commit();                     }     } catch (sqlexception err)     {         joptionpane.showmessagedialog(null,err.getmessage());     }  updateui method follows:      public void updateui(int id, string name, string result, date date, date date2)         {             try             {                 string strcdate = dateformat.format(date);//rs.getdate("date"));                 string strladate = dateformat.format(date2);//rs.getdate("date2"));                  textfield.settext(name);//rs.getstring("name"));                 textfield_1.settext(id+"");//integer.tostring(rs.getint("id")));                 textfield_2.settext(result);//rs.getstring("result"));                 lblcalculationdate.settext("date: " + strcdate);                 lbllastaccessdate.settext("date2: " + strladate);             }             catch(sqlexception err)             {                 joptionpane.showmessagedialog(null,err.getmessage());             }         } 

Comments