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
Post a Comment