java - Getting SQLiteException: no such column -


public class mydbhandler extends sqliteopenhelper {      private static final int database_version = 1;     private static final string database_name = "winkelskortrijk.db";     private static final string table_users = "users";     private static final string table_favourites = "favorieten";      public static final string column_id = "id";     public static final string column_username = "username";     public static final string column_password = "password";      public static final string column_id2 = "id2";     public static final string column_name = "naam";     public static final string column_straat = "straat";     public static final string column_huisnr = "nr";     public static final string column_postcode = "postcode";     public static final string column_deelgemeente = "deelgemeente";     public static final string column_gemeente = "gemeente";     public static final string column_adres = "adres";      public mydbhandler(context context, string name,                        sqlitedatabase.cursorfactory factory, int version) {         super(context, database_name, factory, database_version);     }      @override     public void oncreate(sqlitedatabase db) {          string create_users_table = "create table " +                 table_users + "("                 + column_id + " integer primary key autoincrement,"                 + column_username + " text,"                 + column_password + " text"                 + ")";         db.execsql(create_users_table);          string create_favourites_table = "create table " +                 table_favourites + "("                 + column_id2 + " integer primary key,"                 + column_name + " text,"                 + column_straat + " text,"                 + column_huisnr + " integer,"                 + column_postcode + " integer,"                 + column_deelgemeente + " text,"                 + column_gemeente + " text,"                 + column_adres + " text,"                 + column_id + " int, "                 + "foreign key(" + column_id + ") references "                 + table_users + "(id) " + ")";         db.execsql(create_favourites_table);      }      @override     public void onupgrade(sqlitedatabase db, int oldversion,                           int newversion) {      }       public user finduser(user user) {          string selectquery = "select  * " + table_users + " "                 + column_username + " = " + user.getusername();          sqlitedatabase db = this.getwritabledatabase();          cursor cursor = db.rawquery(selectquery, null);          user finduser = new user();          if (cursor.movetofirst()) {             cursor.movetofirst();             finduser.setusername(cursor.getstring(1));             finduser.setpassword(cursor.getstring(2));             cursor.close();         } else {             finduser = null;         }         db.close();         return finduser;      }  } 

when try run finduser(user user) method, sqlexception no such column: gebruikersnaam (note: gebruikersnaam variable in user.getusername(), want function return user if found or null when isn't.

what doing wrong , there better way use queries?

crash log:

07-25 15:22:42.345 32264-32264/com.example.hoofdgebruiker.winkelskortrijk e/androidruntime: fatal exception: main process: com.example.hoofdgebruiker.winkelskortrijk, pid: 32264 android.database.sqlite.sqliteexception: no such column: gebruikersnaam (code 1): , while compiling: select * users username = gebruikersnaam @ android.database.sqlite.sqliteconnection.nativepreparestatement(native method) @ android.database.sqlite.sqliteconnection.acquirepreparedstatement(sqliteconnection.java:887) @ android.database.sqlite.sqliteconnection.prepare(sqliteconnection.java:498) @ android.database.sqlite.sqlitesession.prepare(sqlitesession.java:588) @ android.database.sqlite.sqliteprogram.(sqliteprogram.java:58) @ android.database.sqlite.sqlitequery.(sqlitequery.java:37) @ android.database.sqlite.sqlitedirectcursordriver.query(sqlitedirectcursordriver.java:44) @ android.database.sqlite.sqlitedatabase.rawquerywithfactory(sqlitedatabase.java:1316) @ android.database.sqlite.sqlitedatabase.rawquery(sqlitedatabase.java:1255) @ com.example.hoofdgebruiker.winkelskortrijk.database.mydbhandler.finduser(mydbhandler.java:78) @ com.example.hoofdgebruiker.winkelskortrijk.homepage.mainactivity.register(mainactivity.java:49) @ com.example.hoofdgebruiker.winkelskortrijk.homepage.register$1.onclick(register.java:47) @ android.view.view.performclick(view.java:5198) @ android.view.view$performclick.run(view.java:21147) @ android.os.handler.handlecallback(handler.java:739) @ android.os.handler.dispatchmessage(handler.java:95) @ android.os.looper.loop(looper.java:148) @ android.app.activitythread.main(activitythread.java:5417) @ java.lang.reflect.method.invoke(native method) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:726) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:616)

just update query

string selectquery = "select  * " + table_users + " "             + column_username + " = " + user.getusername(); 

to

string selectquery = "select  * " + table_users + " "             + column_username + " = '" + user.getusername()+"'"; 

enclose user.getusername() value single quotes because define column_username text. if string contain quotes not work. before adding user.getusername() query remove quotes username below

user.getusername().replace("\'","''");


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 -