【发布时间】:2015-12-15 00:50:52
【问题描述】:
我的数据库中有一个问题和答案表。这两者之间的关系是一个问题可以有多个答案。在我的 C++ 代码中,我有一个 Question 普通对象,它存储问题文本和答案的 QList。 Answer 普通对象只存储答案文本。
我想阅读与这些问题相关的所有问题和所有答案,并将它们存储在我的问题对象中。这就是我所做的。
QList<Question*> *ExamPersistance::readQuestions(int examId)
{
QList<Question*> *questions;
QSqlQuery *query = new QSqlQuery(connection->getDb());
query->prepare("select q.id, q.text from question q where id_exam =:examId");
query->bindValue(":examId",examId);
query->exec();
while(query->next())
{
questions->append(new Question(
query->value(1).toString(),
this->readAnswers(query->value(0).toInt())));
}
return questions;
}
QList<Answer*> *ExamPersistance::readAnswers(int questionId)
{
QList<Answer*> *answers;
QSqlQuery *query = new QSqlQuery(connection->getDb());
query->prepare("select a.text from answer a where id_question = :questionId");
query->bindValue(":questionId",questionId);
query->exec();
while(query->next())
{
answers->append(new Answer(query->value(0).toString()));
}
return answers;
}
我遇到分段错误,我不知道为什么。
这些是我的头文件中的构造函数
Answer(QString text);
Question(QString name, QList<Answer*> *answers);
也许我的指针做错了。我不得不承认我对这些不是很熟悉,因为我来自 Java。
编辑:
我还有一个类“考试”,其中存储了某个考试的问题,但我认为这并不重要。只是你知道这个“int ExamId”代表什么
【问题讨论】:
-
Segfault != 内存泄漏
-
您是否使用相同的数据库连接同时运行两个查询?