java - Insert data in SQLite for JavaFX Applications -


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