#include "AlbumDao.h" #include #include #include #include using namespace std; AlbumDao::AlbumDao(QSqlDatabase& database) : mDatabase(database) {} /** * @brief AlbumDao::init 初始化 */ void AlbumDao::init() const { if (!mDatabase.tables().contains("albums")) { QSqlQuery query(mDatabase); query.exec( "CREATE TABLE albums(id INTEGER PRIMARY KEY AUTOINCRMENT, name TEXT)"); } } /** * @brief AlbumDao::addAlbum 新增 * @param album */ void AlbumDao::addAlbum(Album& album) const { QSqlQuery query(mDatabase); query.prepare("INSERT INTO albums(name) VALUES(:name)"); query.bindValue(":name", album.name()); query.exec(); album.setId(query.lastInsertId().toInt()); } void AlbumDao::updateAlbum(const Album& album) const { QSqlQuery query(mDatabase); query.prepare("UPDATE albums SET name=:name WHERE id=:id"); query.bindValue(":name", album.name()); query.bindValue(":id", album.id()); query.exec(); } void AlbumDao::removeAlbum(int id) const { QSqlQuery query(mDatabase); query.prepare("DELETE FROM albums WHERE id=:id"); query.bindValue(":id", id); query.exec(); } unique_ptr>> AlbumDao::albums() const { QSqlQuery query("SELECT * FROM albums", mDatabase); query.exec(); unique_ptr>> list(new vector>); while (query.next()) { unique_ptr album(new Album()); album->setId(query.value("id").toInt()); album->setName(query.value("name").toString()); list->push_back(std::move(album)); } return list; }