在sqlite android中存储布尔值



我试图保存复选框的状态,并在选中的情况下设置为true,反之亦然。我在sqlite中设置一个方法,但仍然无法存储布尔值。我知道它是以1或0的形式存储的,但仍然不能这样做。当我存储一个int型时,它会给出一个错误

private static final int STATUS = 0;
private static final String CHECKBOX_POS = "checkbox_pos";
@Override
public void onCreate(SQLiteDatabase db) {
String create_table = "CREATE TABLE " + TABLE_NAME + "( "
+ "ID INTEGER PRIMARY KEY ,"
+  STATUS + " INTEGER NOT NULL, "
+  CHECKBOX_POS + " TEXT NOT NULL, "
)";
db.execSQL(create_table);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

if (oldVersion < 2) {
db.execSQL("ALTER TABLE " + TABLE_NAME + " ADD COLUMN " + STATUS +
" INTEGER ");
}
public boolean insertPos(String position,
int checkbox_status){
SQLiteDatabase database = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(CHECKBOX_POS,position);
contentValues.put(STATUS,checkbox_status);
long result = database.insert(TABLE_NAME,null,contentValues);
if (result == -1){
return false;
} else {
return true;
}

}

这是给出错误<column definition name> or <table constraint> expected, got '0'onCreate<column definition name> expected, got '0'在行db.execSQL("ALTER TABLE " + TABLE_NAME + " ADD COLUMN " + STATUS + " INTEGER ");

我需要这样使用

if (isChecked){
boolean success = db.insertPos(
String.valueOf(checkbox_pos),
// the boolean value to be inserted);
}

您已经定义了:

private static final int STATUS = 0;

所以,STATUS是一个整型变量但是你在这里用它作为一个列的名称:

String create_table = "CREATE TABLE " + TABLE_NAME + "( "
+ "ID INTEGER PRIMARY KEY ,"
+  STATUS + " INTEGER NOT NULL, "
+  CHECKBOX_POS + " TEXT NOT NULL, "
)"; 

:

db.execSQL("ALTER TABLE " + TABLE_NAME + " ADD COLUMN " + STATUS +                   " INTEGER ");

:

contentValues.put(STATUS,checkbox_status);

更改STATUS的定义,使其成为可以用作列名的字符串:

private static final String STATUS = "status";

最新更新