如何在Android SQlite中添加布尔列

时间:2014-07-07 07:09:14

标签: 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列。现在我想添加一个布尔值为true / false的列。如果我必须添加名为" status" 布尔列,我该如何添加追加/更改此语句。

5 个答案:

答案 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")

您可以使用此标志在用户屏幕上显示。

参考:http://www.sqlite.org/datatype3.html

答案 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而不是它