android中SQLLite中的“无此列”异常

时间:2018-07-19 11:23:31

标签: android sqlite

我正在尝试实现一项功能,如果该应用程序的用户曾经登录过,该按钮将在登录屏幕上显示一个按钮。如果他/她从未登录过,则隐藏登录屏幕中的按钮。 我正在做的是,当用户首次登录时,字符串“ 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天,但没有成功。 请帮忙!

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);
}