如何在Android SQlite中添加布尔列

如何在Android SQlite中添加布尔列,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,我已使用以下行为我的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列

我已使用以下行为我的
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”

布尔列,我如何添加/更改此语句,如MD所述


SQLite没有单独的布尔存储类。相反 布尔值存储为整数0(false)和1(true)

使用下面的ALTER语句-

ALTER TABLE CREATE_DB_TABLE ADD status boolean NOT NULL default 0;
然后可以使用游标获取所需的值,然后转换为实际的布尔值-

flag=cursor.getString(0).equals("1")
您可以使用此标志在用户屏幕上显示

参考:

//插入时

将Status.TRUE.ordinal()值传递给数据库和

//检索时

用序号值交叉检查状态


您可以使用以下内容:

创建您的表:

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

Sqlite不提供任何用于存储布尔值的类


您可以将
0
用于
false
1
用于
true
。从数据库中检索这些值后,您必须转换这些值。

不幸的是,android sqlite不支持布尔类型,您应该使用Integer,而不是它。

sqlite没有单独的布尔存储类。相反,布尔值存储为整数0(false)和1(true)。检查这个你的意思是说,像
“status INTEGER NOT NULL,”
??通过这个Thnx获取快速帮助。请在这篇帖子上抢购,我等了3天的答案,我甚至没有得到一条评论…请在这篇帖子上抢购,我等了3天的答案,我甚至没有得到一条评论…不幸的是,我对
CursorJoiner
LoaderManager
一无所知,因为我不使用它们。我的建议是。。。你不能在一个查询中直接连接(或者你想联合)两个表吗?
CursorJoiner
实际上连接了两个游标。但是,我需要通过LoaderManager调用它,因为它会自动查询ContentProvider。我需要在运行时反映更改,我无法反复查询。谢谢,非常准确的解决方案谢谢,此方法还将检查,如果数字为奇数或偶数,我可能会使用
返回c.getShort(index)==1取而代之。
Boolean flag = (cursor.getInt(cursor.getColumnIndex("flag")) == 1);