i have class below called database facilitate manipulation of sqlite database:
public class database { private string constring = "jdbc:sqlite:database.db"; private connection con = null; public database() { try { class.forname("org.sqlite.jdbc"); } catch (exception ex) { logger.getlogger(database.class.getname()).log(level.severe, null, ex); } } public connection getconnection() { try { con = drivermanager.getconnection(constring); } catch (sqlexception ex) { logger.getlogger(database.class.getname()).log(level.severe, null, ex); con = null; } return con; } public void inittables() { try { statement st = getconnection().createstatement(); st.execute("create table if not exists setting(name text, value text)"); } catch (sqlexception ex) { logger.getlogger(database.class.getname()).log(level.severe, null, ex); } } // ################################################################################ // # setting table // ################################################################################ public list<setting> getsettings() { list<setting> result = new arraylist<setting>(); try { statement st = getconnection().createstatement(); resultset r = st.executequery("select * setting"); while (r.next()) { result.add(new setting(r.getstring("name"), r .getstring("value"))); } } catch (sqlexception ex) { logger.getlogger(database.class.getname()).log(level.severe, null, ex); result = new arraylist<setting>(); } return result; } public void createsetting(setting s) { try { statement st = getconnection().createstatement(); st.execute("insert setting (name,value) values(" + s.getname() + "," + s.getvalue() + ")"); } catch (sqlexception ex) { logger.getlogger(database.class.getname()).log(level.severe, null, ex); } } public void updatesetting(setting s) { try { statement st = getconnection().createstatement(); st.execute("update setting set value = " + s.getvalue() + " name = " + s.getname()); } catch (sqlexception ex) { logger.getlogger(database.class.getname()).log(level.severe, null, ex); } } public setting findsetting(string name) { setting setting = null; try { statement st = getconnection().createstatement(); resultset rs = st .executequery("select * setting name = " + name); while (rs.next()) { setting = new setting(rs.getstring("name"), rs.getstring("value")); } } catch (exception ex) { logger.getlogger(database.class.getname()).log(level.severe, null, ex); setting = null; } return setting; } } after invoking createsetting method, error thrown:
jul 21, 2015 3:26:49 pm com.database.database createsetting severe: null java.sql.sqlexception: [sqlite_error] sql error or missing database (no such column: fname) @ org.sqlite.core.db.newsqlexception(db.java:890) @ org.sqlite.core.db.newsqlexception(db.java:901) @ org.sqlite.core.db.throwex(db.java:868) @ org.sqlite.core.nativedb.prepare(native method) @ org.sqlite.core.db.prepare(db.java:211) @ org.sqlite.jdbc3.jdbc3statement.execute(jdbc3statement.java:60) @ com.rameses.database.database.createsetting(database.java:68) @ com.rameses.sample.databasesample$1.handle(databasesample.java:35) @ com.rameses.sample.databasesample$1.handle(databasesample.java:31) @ com.sun.javafx.event.compositeeventhandler.dispatchbubblingevent(compositeeventhandler.java:86) @ com.sun.javafx.event.eventhandlermanager.dispatchbubblingevent(eventhandlermanager.java:238) @ com.sun.javafx.event.eventhandlermanager.dispatchbubblingevent(eventhandlermanager.java:191) @ com.sun.javafx.event.compositeeventdispatcher.dispatchbubblingevent(compositeeventdispatcher.java:59) @ com.sun.javafx.event.basiceventdispatcher.dispatchevent(basiceventdispatcher.java:58) @ com.sun.javafx.event.eventdispatchchainimpl.dispatchevent(eventdispatchchainimpl.java:114) @ com.sun.javafx.event.basiceventdispatcher.dispatchevent(basiceventdispatcher.java:56) @ com.sun.javafx.event.eventdispatchchainimpl.dispatchevent(eventdispatchchainimpl.java:114) @ com.sun.javafx.event.basiceventdispatcher.dispatchevent(basiceventdispatcher.java:56) @ com.sun.javafx.event.eventdispatchchainimpl.dispatchevent(eventdispatchchainimpl.java:114) @ com.sun.javafx.event.eventutil.fireeventimpl(eventutil.java:74) @ com.sun.javafx.event.eventutil.fireevent(eventutil.java:49) @ javafx.event.event.fireevent(event.java:198) @ javafx.scene.node.fireevent(node.java:8390) @ javafx.scene.control.button.fire(button.java:185) @ com.sun.javafx.scene.control.behavior.buttonbehavior.mousereleased(buttonbehavior.java:182) @ com.sun.javafx.scene.control.skin.behaviorskinbase$1.handle(behaviorskinbase.java:96) @ com.sun.javafx.scene.control.skin.behaviorskinbase$1.handle(behaviorskinbase.java:89) @ com.sun.javafx.event.compositeeventhandler$normaleventhandlerrecord.handlebubblingevent(compositeeventhandler.java:218) @ com.sun.javafx.event.compositeeventhandler.dispatchbubblingevent(compositeeventhandler.java:80) @ com.sun.javafx.event.eventhandlermanager.dispatchbubblingevent(eventhandlermanager.java:238) @ com.sun.javafx.event.eventhandlermanager.dispatchbubblingevent(eventhandlermanager.java:191) @ com.sun.javafx.event.compositeeventdispatcher.dispatchbubblingevent(compositeeventdispatcher.java:59) @ com.sun.javafx.event.basiceventdispatcher.dispatchevent(basiceventdispatcher.java:58) @ com.sun.javafx.event.eventdispatchchainimpl.dispatchevent(eventdispatchchainimpl.java:114) @ com.sun.javafx.event.basiceventdispatcher.dispatchevent(basiceventdispatcher.java:56) @ com.sun.javafx.event.eventdispatchchainimpl.dispatchevent(eventdispatchchainimpl.java:114) @ com.sun.javafx.event.basiceventdispatcher.dispatchevent(basiceventdispatcher.java:56) @ com.sun.javafx.event.eventdispatchchainimpl.dispatchevent(eventdispatchchainimpl.java:114) @ com.sun.javafx.event.eventutil.fireeventimpl(eventutil.java:74) @ com.sun.javafx.event.eventutil.fireevent(eventutil.java:54) @ javafx.event.event.fireevent(event.java:198) @ javafx.scene.scene$mousehandler.process(scene.java:3758) @ javafx.scene.scene$mousehandler.access$1500(scene.java:3486) @ javafx.scene.scene.impl_processmouseevent(scene.java:1762) @ javafx.scene.scene$scenepeerlistener.mouseevent(scene.java:2495) @ com.sun.javafx.tk.quantum.glassvieweventhandler$mouseeventnotification.run(glassvieweventhandler.java:350) @ com.sun.javafx.tk.quantum.glassvieweventhandler$mouseeventnotification.run(glassvieweventhandler.java:275) @ java.security.accesscontroller.doprivileged(native method) @ com.sun.javafx.tk.quantum.glassvieweventhandler.lambda$handlemouseevent$350(glassvieweventhandler.java:385) @ com.sun.javafx.tk.quantum.glassvieweventhandler$$lambda$217/1740853902.get(unknown source) @ com.sun.javafx.tk.quantum.quantumtoolkit.runwithoutrenderlock(quantumtoolkit.java:404) @ com.sun.javafx.tk.quantum.glassvieweventhandler.handlemouseevent(glassvieweventhandler.java:384) @ com.sun.glass.ui.view.handlemouseevent(view.java:555) @ com.sun.glass.ui.view.notifymouse(view.java:927) @ com.sun.glass.ui.win.winapplication._runloop(native method) @ com.sun.glass.ui.win.winapplication.lambda$null$145(winapplication.java:101) @ com.sun.glass.ui.win.winapplication$$lambda$36/485815673.run(unknown source) @ java.lang.thread.run(thread.java:745) the actual invocation process this:
save.setonaction(new eventhandler<actionevent>(){ @override public void handle(actionevent event) { database db = new database(); db.createsetting(new setting(name.gettext(),value.gettext())); } }); question : think error , how resolve this?
you need enclose values in query in quotes.
so query :
st.execute("insert setting (name,value) values(" + s.getname() + "," + s.getvalue() + ")"); should :
st.execute("insert setting (name,value) values('" + s.getname() + "','" + s.getvalue() + "')");
Comments
Post a Comment