実行時にアプリ内の複数のsqliteデータベースを識別する方法を教えてください。私は、クイズの各カテゴリ(主題)に1つずつ、5〜6個のsqliteデータベースが必要なiPhone用のクイズアプリを作成しています。誰でも助けて
2 に答える
簡単なFMDBを使用します。
データベースの識別は簡単ですが、問題がわかりません...
FMDatabase *dbQuestions = [FMDatabase databaseWithPath:@"/tmp/tmpA.db"];
FMDatabase *dbAnswers = [FMDatabase databaseWithPath:@"/tmp/tmpB.db"];
FMDatabase *dbPeople = [FMDatabase databaseWithPath:@"/tmp/tmpC.db"];
[...]
[dbQuestions open]
[dbAnswers open]
[dbPeople open]
[...]
乾杯。
これはコメントとして投稿するには長すぎますが、何らかの形であなたの質問に対処するため、アプリケーションに別の構造を使用することを再度お勧めします。複数のデータベースを持つことは、クイズのような単純なことには実用的ではありません.
ここでいくつかのデータベース構造の例を見つけることができます データベースに多肢選択式クイズを保存する - スキーマを決定するまたはここでPHP と MySQL を使用して「クイズ」Web アプリケーションを開発するためのデータベース設計
さまざまなカテゴリの単純なクイズがあると仮定すると、別の方法として、カテゴリをCategoriesテーブルに格納することができます。
* Category
- category_id (integer)
- category_name (string/text)
ID がそれぞれに一意になる場所。たとえば、id 1のカテゴリスポーツと id 2 のカテゴリhistoryを持つことができます。
質問は、 Questionsという名前の別のテーブルに保存できます。
* Questions
- question_id (integer)
- question_category (integer)
- question_text (string/text)
- question_correct_answer_id (integer)
質問 1: John Doe と対戦したのはどのチームですか? . 1 は Sports カテゴリの ID であるため、question_category
フィールドには 1 を入力します。にquestion_correct_answer_id
は、正解のIDを保存します(回答自体ではなく、IDのみ)
最後になりましたが、Answersテーブルです。
* Answers
- answer_id (integer)
- question_id (integer)
- answer_text (string/text)
answer_id
これが回答の ID です。それが正しい場合は、質問テーブルに保存できますquestion_id
。また、質問を識別するために a を使用できます。
次に、次のようなことができます。
`SELECT * FROM Questions WHERE 'question_category' = 1`
すべてのスポーツの質問を取得します。そして、質問ごとに、次のことができます
SELECT * FROM Answers WHERE 'question_id' = 'your question's id'
注意してください、私の例は必ずしも最善の解決策ではありません。これは単一のデータベースのみを使用する基本的な例ですが、複数のデータベースではなく複数のテーブルを使用しています。
あなたへの私のアドバイスは、この代替案を検討することです.それが価値があると思うなら、データベースについて少し読んで、より良いものを設計してください.
幸運を!