| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- #include "AlbumDao.h"
- #include <QSqlDatabase>
- #include <QSqlQuery>
- #include <QVariant>
- #include <QVector>
- 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<vector<unique_ptr<Album>>> AlbumDao::albums() const {
- QSqlQuery query("SELECT * FROM albums", mDatabase);
- query.exec();
- unique_ptr<vector<unique_ptr<Album>>> list(new vector<unique_ptr<Album>>);
- while (query.next()) {
- unique_ptr<Album> album(new Album());
- album->setId(query.value("id").toInt());
- album->setName(query.value("name").toString());
- list->push_back(std::move(album));
- }
- return list;
- }
|