在一个应用程序xcode中使用多个sqlite数据库

时间:2012-09-26 12:09:49

标签: objective-c ios xcode sqlite

如何在运行时在我的应用中识别多个 sqlite 数据库。我正在制作iphone的测验应用程序,其中我需要5-6个sqlite数据库,每个类别(主题)一个测验。帮助任何人

2 个答案:

答案 0 :(得分:6)

使用简单的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]
[...]

欢呼声。

答案 1 :(得分: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都是唯一的。例如,您可以使用ID为1的 sports 类别以及ID为2的类别 history

问题可以存储在另一个名为问题

的表中
* 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来识别问题。< / p>

然后你可以做类似的事情:

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

并获得所有体育问题。 对于每个问题,你都可以做到

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

要小心,我的示例不是最佳解决方案,它只是一个使用单个数据库但使用多个表而不是多个数据库的基本示例。

我对你的建议是考虑这个替代方案,如果你认为这是值得的,请阅读一些关于数据库并设计更好的数据库。

祝你好运!