我使用以下行为ContentProvider
创建了一个表格:
static final String CREATE_DB_TABLE =
" CREATE TABLE " + CONTACTS_TABLE_NAME +
" (_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
" pid TEXT NOT NULL, " +
" name TEXT NOT NULL,"+
"number TEXT NOT NULL);";
它有4列。现在我想添加一个布尔值为true / false的列。如果我必须添加名为" status" 的布尔列,我该如何添加追加/更改此语句。
答案 0 :(得分:60)
您可以使用以下内容:
创建表格:
static final String CREATE_DB_TABLE =
"CREATE TABLE " + CONTACTS_TABLE_NAME " +
" (_id INTEGER PRIMARY KEY AUTOINCREMENT," +
"..." + " flag INTEGER DEFAULT 0)";
将您的值检索为:
Boolean flag = (cursor.getInt(cursor.getColumnIndex("flag")) == 1);
答案 1 :(得分:14)
正如M D所述,
SQLite没有单独的布尔存储类。代替, 布尔值存储为整数0(假)和1(真)。
使用以下ALTER语句 -
ALTER TABLE CREATE_DB_TABLE ADD status boolean NOT NULL default 0;
然后您可以使用Cursor获取所需的值,然后转换为实际的布尔值 -
flag=cursor.getString(0).equals("1")
您可以使用此标志在用户屏幕上显示。
答案 2 :(得分:1)
public enum Status{
TRUE,FALSE;
}
static final String CREATE_DB_TABLE =
" CREATE TABLE " + CONTACTS_TABLE_NAME +
" (_id INTEGER PRIMARY KEY AUTOINCREMENT, " +......
" booleanColumn INTEGER DEFAULT 0);";
插入时//
将Status.TRUE.ordinal()值传递给数据库和
检索时//
使用状态的序数值进行交叉检查
答案 3 :(得分:0)
Sqlite不提供任何存储布尔值的类。
您可以将0
用于false
,将1
用于true
。然后,您必须在从数据库中检索这些值后转换这些值。
答案 4 :(得分:0)
不幸的是,android sqlite不支持布尔类型,你应该使用Integer而不是它