次の行を使用して、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"という名前の列を追加する必要がある場合、このステートメントを追加/変更するにはどうすればよいですか。
次のようなものを使用できます。
テーブルを作成します。
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);
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")
このフラグを使用して、ユーザー画面に表示できます。
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()値をデータベースに渡し、
//取得中
ステータスの順序値とのクロスチェック
Sqliteは、ブール値を格納するクラスを提供しません。
false
には0
を、true
には1
を使用できます。データベースから値を取得した後、これらの値を変換する必要があります。
残念ながらAndroid sqliteはブール型をサポートしていないため、代わりに整数を使用する必要があります