web-dev-qa-db-ja.com

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の列を追加します。 boolean"status"という名前の列を追加する必要がある場合、このステートメントを追加/変更するにはどうすればよいですか。

30
BST Kaal

次のようなものを使用できます。

テーブルを作成します。

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);
61
Fantômas

M Dが述べたように、

SQLiteには、別個のブールストレージクラスがありません。代わりに、ブール値は整数0(false)および1(true)として保存されます。

次のALTERステートメントを使用します-

ALTER TABLE CREATE_DB_TABLE ADD status boolean NOT NULL default 0;

次に、カーソルを使用して必要な値を取得し、実際のブール値に変換します-

flag=cursor.getString(0).equals("1")

このフラグを使用して、ユーザー画面に表示できます。

リファレンス: http://www.sqlite.org/datatype3.html

16
My God
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()値をデータベースに渡し、

//取得中

ステータスの順序値とのクロスチェック

1
Santhosh

Sqliteは、ブール値を格納するクラスを提供しません。

falseには0を、trueには1を使用できます。データベースから値を取得した後、これらの値を変換する必要があります。

0
Pankaj Arora

残念ながらAndroid sqliteはブール型をサポートしていないため、代わりに整数を使用する必要があります

0