java - My program works as intended I am removing a record from a data base and it works except for an Invalid column index exception -
this sql statement. error shows "pstat.setstring(2, rp.getlegaldescription());"
private static final string remove_object = "delete res id = ?";
this method removing row.
private boolean deletepreparedstatement(residentialproperty rp) { try { /* * (long id, java.lang.string legaldescription, java.lang.string address, java.lang.string quadrant, java.lang.string zone, double askingprice, java.lang.string comments, double area, double bathrooms, int bedrooms, char garage) */ preparedstatement pstat = conn.preparestatement(remove_object); pstat.setlong(1, rp.getid()); pstat.setstring(2, rp.getlegaldescription()); pstat.setstring(3, rp.getaddress()); pstat.setstring(4, rp.getquadrant()); pstat.setstring(5, rp.getzone()); pstat.setdouble(6, rp.getaskingprice()); pstat.setstring(7, rp.getcomments()); pstat.setdouble(8, rp.getarea()); pstat.setdouble(9, rp.getbathrooms()); pstat.setint(10, rp.getbedrooms()); pstat.setstring(11, rp.getgarage()+""); pstat.setlong(12, rp.getid()); int rowcount = pstat.executeupdate(); system.out.println("row count = "+ rowcount); pstat.close(); return rowcount == 1; } catch(sqlexception e) { e.printstacktrace(); } return false; }
and method take out of database
public boolean remove(object o) { residentialproperty rp = (residentialproperty)o; try { preparedstatement pstat = conn.preparestatement(remove_object); pstat.setlong(1, rp.getid()); rs = pstat.executequery(); rs.close(); pstat.close(); }catch(sqlexception e) { e.printstacktrace(); } return deletepreparedstatement(rp); }
lastly error log looks follows. thank reading. continue try , solve this gets posted
java.sql.sqlexception: invalid column index sucessful remove @ oracle.jdbc.driver.oraclepreparedstatement.setstringinternal(oraclepreparedstatement.java:5168) @ oracle.jdbc.driver.oraclepreparedstatement.setstring(oraclepreparedstatement.java:5156) @ oracle.jdbc.driver.oraclepreparedstatementwrapper.setstring(oraclepreparedstatementwrapper.java:278) @ saitmls.persistance.property.residentialpropertybroker.deletepreparedstatement(residentialpropertybroker.java:181) @ saitmls.persistance.property.residentialpropertybroker.remove(residentialpropertybroker.java:455) @ saitmls.problemdomain.property.userinterface$2.actionperformed(userinterface.java:705) @ javax.swing.abstractbutton.fireactionperformed(abstractbutton.java:2022) @ javax.swing.abstractbutton$handler.actionperformed(abstractbutton.java:2348) @ javax.swing.defaultbuttonmodel.fireactionperformed(defaultbuttonmodel.java:402) @ javax.swing.defaultbuttonmodel.setpressed(defaultbuttonmodel.java:259) @ javax.swing.plaf.basic.basicbuttonlistener.mousereleased(basicbuttonlistener.java:252) @ java.awt.component.processmouseevent(component.java:6533) @ javax.swing.jcomponent.processmouseevent(jcomponent.java:3324) @ java.awt.component.processevent(component.java:6298) @ java.awt.container.processevent(container.java:2236) @ java.awt.component.dispatcheventimpl(component.java:4889) @ java.awt.container.dispatcheventimpl(container.java:2294) @ java.awt.component.dispatchevent(component.java:4711) @ java.awt.lightweightdispatcher.retargetmouseevent(container.java:4888) @ java.awt.lightweightdispatcher.processmouseevent(container.java:4525) @ java.awt.lightweightdispatcher.dispatchevent(container.java:4466) @ java.awt.container.dispatcheventimpl(container.java:2280) @ java.awt.window.dispatcheventimpl(window.java:2746) @ java.awt.component.dispatchevent(component.java:4711) @ java.awt.eventqueue.dispatcheventimpl(eventqueue.java:758) @ java.awt.eventqueue.access$500(eventqueue.java:97) @ java.awt.eventqueue$3.run(eventqueue.java:709) @ java.awt.eventqueue$3.run(eventqueue.java:703) @ java.security.accesscontroller.doprivileged(native method) @ java.security.protectiondomain$javasecurityaccessimpl.dointersectionprivilege(protectiondomain.java:76) @ java.security.protectiondomain$javasecurityaccessimpl.dointersectionprivilege(protectiondomain.java:86) @ java.awt.eventqueue$4.run(eventqueue.java:731) @ java.awt.eventqueue$4.run(eventqueue.java:729) @ java.security.accesscontroller.doprivileged(native method) @ java.security.protectiondomain$javasecurityaccessimpl.dointersectionprivilege(protectiondomain.java:76) @ java.awt.eventqueue.dispatchevent(eventqueue.java:728) @ java.awt.eventdispatchthread.pumponeeventforfilters(eventdispatchthread.java:201) @ java.awt.eventdispatchthread.pumpeventsforfilter(eventdispatchthread.java:116) @ java.awt.eventdispatchthread.pumpeventsforhierarchy(eventdispatchthread.java:105) @ java.awt.eventdispatchthread.pumpevents(eventdispatchthread.java:101) @ java.awt.eventdispatchthread.pumpevents(eventdispatchthread.java:93) @ java.awt.eventdispatchthread.run(eventdispatchthread.java:82)
you need pass id
alone preparedstatement
object because sql (delete res id = ?
) accepts 1 parameter (i.e., id
).
so keep 1 (id) parameter (shown below) in deletepreparedstatement
method , remove rest of pstat.setstring
, etc.. parameters:
pstat.setlong(1, rp.getid());
as side note, suggest close preparedstatement
objects in block or use try-with-resources.
Comments
Post a Comment