如何在Android SQlite中添加布尔列

BST*_*aal 33 sqlite android 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);";
Run Code Online (Sandbox Code Playgroud)

它有4列.现在我想添加一个布尔值为true/false的列.如果我必须添加一个名为"status"布尔列,我如何添加append/change这个语句.

Fan*_*mas 62

你可以使用这样的东西:

创建你的表:

static final String CREATE_DB_TABLE = 
    "CREATE TABLE " + CONTACTS_TABLE_NAME " + 
    " (_id INTEGER PRIMARY KEY AUTOINCREMENT," + 
    "..." + " flag INTEGER DEFAULT 0)";
Run Code Online (Sandbox Code Playgroud)

检索您的价值:

Boolean flag = (cursor.getInt(cursor.getColumnIndex("flag")) == 1);
Run Code Online (Sandbox Code Playgroud)


My *_*God 16

如MD所述,

SQLite没有单独的布尔存储类.相反,布尔值存储为整数0(假)和1(真).

使用以下ALTER语句 -

ALTER TABLE CREATE_DB_TABLE ADD status boolean NOT NULL default 0;
Run Code Online (Sandbox Code Playgroud)

然后你可以使用Cursor获取所需的值,然后转换为实际的布尔值 -

flag=cursor.getString(0).equals("1")
Run Code Online (Sandbox Code Playgroud)

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

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

  • 好吧,我可能会使用 `return c.getShort(index) == 1;` 来代替。 (2认同)