我正在尝试实现一项功能,如果该应用程序的用户曾经登录过,该按钮将在登录屏幕上显示一个按钮。如果他/她从未登录过,则隐藏登录屏幕中的按钮。 我正在做的是,当用户首次登录时,字符串“ LoggedIn”存储在我的数据库表中-从这里可以检查用户是否曾经登录过,并决定是否显示按钮是否显示在登录屏幕上。
为此,我创建了一个表“ LOGGED_IN_STATUS”,然后 执行以下操作:
创建表为:
private final String LOGGED_IN_STATUS_TABLE_CREATE = "create table "+ LOGGED_IN_STATUS + "(" + LOGGED_STATUS + " text default null);";
在“ onCreate()”中将其称为:
database.execSQL(LOGGED_IN_STATUS_TABLE_CREATE);
将值插入其中:
public String insertIntoLoggedStatus(String status)
{
SQLiteDatabase db = this.getWritableDatabase();
db.execSQL("INSERT INTO " + LOGGED_IN_STATUS + "("+LOGGED_STATUS+") VALUES(" + status+");");
return status;
}
然后, 在我的“ LoginScreen.java”活动中将“ insertIntoLoggedStatus()”称为:
loggedInStatus=database.insertIntoLoggedStatus("LoggedIn");
我得到的例外是:
android.database.sqlite.SQLiteException:无此类列:LoggedIn (代码1):,在编译时:INSERT INTO LoggedInStatus(LoggedStatus) VALUES(LoggedIn);
我已经尝试解决了2天,但没有成功。 请帮忙!
答案 0 :(得分:1)
由于状态为字符串,因此必须用single quotes
换行,
db.execSQL("INSERT INTO " + LOGGED_IN_STATUS + "("+LOGGED_STATUS+") VALUES('" + status+"'));
答案 1 :(得分:1)
尝试以下代码,
public String insertIntoLoggedStatus(String status){
ContentValues values = new ContentValues();
values.put(LOGGED_STATUS, status);
db.insert(LOGGED_IN_STATUS, null, values);
}