예제 #1
0
bool Theme::selectFromDatabase( const SQLMgr &sqlManager, const qint64 questionsCount, const int answersCount )
{
    const QString tableName_questions( "Questions" );
    const QStringList selectedFields( { "question_id", "text", "question_type",
                                      "recomended_time", "caseSens", "stripSpace" } );

    SqlWhere _where( "theme_id = '" + _id + "'" );

    if( _where.isValid() )
    {
        QSqlQuery query = sqlManager.select( tableName_questions, selectedFields, _where, SqlOrderBy::RANDOM(), questionsCount );


        while( query.next() )
        {
            Question question = selectQuestion( query );
            QVector<Answer> answers = selectAnswers( sqlManager, answersCount, question.getId() );

            question.setAnswers( answers );
            pushQuestion( question );
        }

        return true;
    }
    return false;
}
예제 #2
0
void EngineerExam::parseQuestions(QString filename) {
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName(filename);
    if (!db.open()) {
	qCritical() << trUtf8("Nie można otworzyć bazy danych!");
    }

    QSqlTableModel question;
    question.setTable("Question");
    question.select();

    QSqlTableModel answers;
    answers.setTable("Answer");
    answers.select();

    QStringList qsl;

    int i = 0;
    while (question.canFetchMore()) {
	question.fetchMore();
	for (; i < question.rowCount(); ++i) {
	    qsl.clear();

	    quint32 id = question.record(i).value("Id").toUInt();
	    QString text = question.record(i).value("Text").toString();
	    Question q;
	    q.setId(id);
	    q.setQuestion(text);

	    answers.setFilter(QString("`id_Question` = %1").arg(id));
	    QString a1 = answers.record(0).value("Text").toString();
	    QString a2 = answers.record(1).value("Text").toString();
	    QString a3 = answers.record(2).value("Text").toString();
	    qsl << a1 << a2 << a3;

	    bool correct1 = answers.record(0).value("IsTrue").toBool();
	    bool correct2 = answers.record(1).value("IsTrue").toBool();
	    bool correct3 = answers.record(2).value("IsTrue").toBool();

	    if (correct1) {
		q.setCorrectAnswer(0);
	    } else if (correct2) {
		q.setCorrectAnswer(1);
	    } else if (correct3) {
		q.setCorrectAnswer(2);
	    }
	    q.setAnswers(qsl);
	    tmpList.append(q);
	}
    }
}