我试图保存复选框的状态,并在选中的情况下设置为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";