2012-09-26 33 views
0

如何在運行時在我的應用程序中識別多個sqlite數據庫。我正在爲iphone測驗應用程序,其中我需要5-6個sqlite數據庫,每個測驗類別(主題)一個。幫助任何人在一個應用程序中使用多個sqlite數據庫xcode

+0

我真的不認爲你需要爲每個類別使用不同的數據庫。這聽起來像是一個非常糟糕的數據庫設計。在你的項目的這個階段,重構數據庫結構是一個選擇嗎?你可以做更好的方式 – BBog

+0

是的,我可以以任何方式改造它üadvice..please告訴我的方式 – user1700171

+0

我給你一個備用答案 – BBog

回答

0

由於這將太長,以張貼評論,它以某種方式解決您的問題, 我會再次建議使用不同的結構爲您的應用程序,因爲有多個數據庫是不實際的這樣一個簡單的事情作爲一個測驗。

你可以在這裏Storing a multiple choice quiz in a database - deciding the schema或這裏Database Design For Developing 'Quiz' Web Application using PHP and MySQL

找到一些數據庫結構的例子假設你有不同的類別簡單的測驗,一個可能的替代將是您的類別存放在分類表。

* Category 
    - category_id (integer) 
    - category_name (string/text) 

其中id對每一個都是唯一的。你可以有,例如,類別體育 id爲1和範疇史 id爲2

的問題可以存儲在另一張表,命名爲問題

* Questions 
    - question_id (integer) 
    - question_category (integer) 
    - question_text (string/text) 
    - question_correct_answer_id (integer) 

你可以有問題1:什麼球隊打了John Doe?。在question_category字段中輸入1,因爲1是體育類別的ID。在question_correct_answer_id你將存儲正確的答案(而不是答案本身,只是ID)

最後但並非最不重要的ID,一個答案表。

* Answers 
    - answer_id (integer) 
    - question_id (integer) 
    - answer_text (string/text) 

這裏answer_id是答案的ID,你可以將其存儲在問題表,如果它是正確的,並且question_id識別的問題。

然後,你可以這樣做:

`SELECT * FROM Questions WHERE 'question_category' = 1` 

,並得到所有的體育問題。 而對於每一個問題,你可以做

SELECT * FROM Answers WHERE 'question_id' = 'your question's id' 

要小心,我的例子是沒有必要的最佳解決方案,它只是只使用一個單一的數據庫,一個基本的例子,但有多個表,而不是多個數據庫。

我對你的建議是考慮這個選擇,如果你認爲這是值得的,請閱讀一些有關數據庫和設計更好的數據庫。

祝你好運!

+0

這是可觀的..但我必須實施應用內購買也在我的測驗可能不會有幫助,因爲購買問答包本身就是一個數據庫 – user1700171

+0

您不銷售數據庫,只是其內容。這就像是一個圖書館,併爲客戶提供每次購買的新書架。如果您想出售測驗包,您只需要出售可以插入已有數據庫的問題/答案。如果你需要添加一個新的包到應用程序會怎麼樣?你需要更新應用程序並添加一個新的數據庫,對吧?通過使用單個數據庫,您可以添加任意數量的包。查詢數據可以從您的站點獲取,例如xml文件,然後插入到已經存在的數據庫中。 – BBog

+0

最後,這是你的呼叫,但使用多個分貝是waaay太矯枉過正,困難和不高效。你應該很少需要使用多個分貝(http://forums.phpfreaks.com/topic/21507-when-to-use-multiple-databases/) – BBog

6

使用FMDB這很容易。

Identifing數據庫很簡單,我dont't明白的問題...

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] 
[...] 

歡呼。

相關問題