sqliteデータベースに約20の異なるカテゴリの質問を入力するクイズアプリがあります。たとえば、誰かがカテゴリ1を購入した場合に、これらの質問がデータベースに追加され、他の質問は追加されないように、アプリの課金に実装したいと思います。私の質問のいくつかは2つのカテゴリに分類されるので、Category1とCategory2としましょう。
try {
for (int n = 1; n < sqlString.length; n++) {
db.execSQL("INSERT INTO " + DATABASE_TABLE + " VALUES ("
+ sqlString[n] + ");");
}
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
これは、SQLiteクラスのonCreateメソッドでの現在の設定です。sqlStringは、これまでの500の質問すべてを含む文字列配列です。
カテゴリが購入されたかどうかを別のテーブルに保存します(ただし、これを行う方法については他の提案を受け付けています)。このデータベースを読み取るクラスを作成して、各カテゴリが購入されているかどうかに関係なく、trueまたはfalseのブール値を設定する予定です。それで
boolean cat1 = CheckIfCategoryHasBeenBought(category1)
購入した場合は、次のような方法を実装します。
boolean[] catChecker = {cat1, cat2, cat3, etc....}
SQLite info = new SQLite(this);
info.open();
info.addQs(catChecker)
//this will pass the true and false boolean values for each method then
//based on that I choose to implement or not
info.close();
しかし、これがそれを行うための良い方法でさえあるかどうかはわかりません。値がすでに追加されているかどうかを確認する方法がわかりません(購入された別のカテゴリと交差した結果)。値がすでに追加されているかどうかを確認するにはカーソルが最適だと思っていましたが、カーソルを検索するにはどうすればよいですか?
これが達成できると私が思った方法は
1)購入した質問に関連付けられた文字列のみを使用して文字列配列を作成します。2)文字列が購入したカテゴリからのものであるかどうかをチェックする上記のforループ内にifステートメントを作成します3)購入していないすべての文字列に値 "null"を指定し、SQLifのみを実行するifステートメントを追加しますsqlString[n]はnullではありません。
これを設定するのがどのように最善であるか、皆さんは何か考えがありますか?