次のような SQLite データベースがあります。
private static final String CREATE_BDD =
"CREATE TABLE " + TABLE_NOTE + " ("
+ COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ COL_TITLE + " TEXT NOT NULL, "
+ COL_NOTE + " TEXT NOT NULL, "
+ COL_COLOR + " TEXT NOT NULL);";
データベースには、ID で識別できるメモが保存されています。データベースからメモを削除すると、削除されたメモの ID よりも上位のすべての ID が 1 つ減るため、列 ID を「1、3、4」よりも「1、2、3、4」のように保持できます。 ID 2のメモを削除すると。
これを使用してすべてのメモを読み取ります (BDDManager を使用して DAO を使用) が、リストを使用してすべてのメモを取得したくないからです。
private void readAllNotes(){
int i = 1;
Note note = new Note();
BDDManager.open();
do{
note = BDDManager.getNoteWithId(i);
if(note != null){
addCard(note); //here I add the note to a new TextView
i++;
}
}while(note != null);
BDDManager.close();
}
また、メモを削除すると、削除された ID の後に読み取ることができません。これは、削除されたメモの後にnullを返し、メモの読み取りを停止するためです。
メモを削除する方法は次のとおりです。
public int removeNoteWithId(int id){
return bdd.delete(TABLE_NOTE, COL_ID + " = " +id, null);
}