如何在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);