void EnrollmentDao::update(Enrollment obj){ Enrollment* enrollment; try{ enrollment = find(obj); } catch(DaoException e){ std::cout<<e.what()<<std::endl; return; } if(db.isValid() && db.isOpen()){ QSqlQuery* q = new QSqlQuery(); q->prepare("update enrollment set mark = :mark where rowid = :id"); q->bindValue(":mark", QString(MarkNames[obj.getMark()])); q->bindValue(":id", obj.getId()); if(!q->exec()){ std::cout<<"Error while updating Enrollment in database : "<< q->lastError().text().toStdString() <<std::endl; delete q; return; } enrollment->setMark(obj.getMark()); delete q; } }
/** * @brief EnrollmentDao::add Adds a new Enrollment to the SQLite database. * A new Enrollment object is inserted into enrollment_map. Enrollment_map is pushed back with the new cursus added. Then, three queries are necessary to add a cursus into the SQLite database. * @param obj Cursus obj. */ void EnrollmentDao::add(Enrollment obj){ int id; if(db.isValid() && db.isOpen()){ QSqlQuery* q = new QSqlQuery(); q->prepare("insert into enrollment(uv_id, semester_id, mark) select U.rowid, S.rowid, :mark from UV U, STUDENT_RECORD S where U.pk_code = :uv_code and S.semester = :semester"); q->bindValue(":mark", QString(MarkNames[obj.getMark()])); q->bindValue(":uv_code", QString(obj.getUV().getCode().c_str())); q->bindValue(":semester", QString(obj.getSemester()->toStdString().c_str())); if(!q->exec()){ std::cout<< "Error while adding Enrollment to database : "<< q->lastError().text().toStdString()<<std::endl; delete q; return; } id = q->lastInsertId().toInt(); delete q; QSqlQuery("select lastInsertedId(rowid) from enrollment"); } enrollment_map.insert(std::pair<Semester*, Enrollment*>(obj.getSemester(), new Enrollment(obj.getUV(), obj.getSemester(), obj.getMark(), id))); }