0

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

4

2 回答 2

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

干杯。

于 2012-09-26T12:25:14.570 回答
0

由于这将太长而无法作为评论发布,并且它确实以某种方式解决了您的问题,因此我再次建议您为您的应用程序使用不同的结构,因为拥有多个数据库对于像测验这样简单的事情是不切实际的。

您可以在此处找到一些数据库结构示例在数据库中存储多项选择测验 - 确定模式或在此处使用 PHP 和 MySQL 开发“测验”Web 应用程序的数据库设计

假设您有不同类别的简单测验,可能的替代方法是将您的类别存储在类别表中。

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

每个人的 id 都是唯一的。例如,您可以拥有 ID 为 1 的类别运动和 ID 为 2 的类别历史

问题可以存储在另一个名为Questions的表中

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

你可以有问题 1:John Doe 是为哪支球队效力的?. 在question_category字段中输入 1,因为 1 是 Sports 类别的 id。在question_correct_answer_id您将存储正确答案的 id (不是答案本身,只是 id)

最后但并非最不重要的一点是答案表。

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

answer_id是答案的 id,如果它是正确的,您可以将其存储在Questionsquestion_id表中,并使用 a来识别问题。

然后您可以执行以下操作:

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

并得到所有的运动问题。对于每个问题,你可以做

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

请注意,我的示例不一定是最佳解决方案,它只是一个基本示例,它仅使用单个数据库,但使用多个表而不是多个数据库。

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

祝你好运!

于 2012-09-26T13:58:03.347 回答