#include "manager.h" Manager::Manager() { } void Manager::init(){} Record* Manager::getRecord() const{ return nullptr; } void Manager::initAppWithDatabaseFile(const QString &dbFileFullPath) { qDebug() << "dbFileFullPath=" << dbFileFullPath; if (dbFileFullPath.isEmpty()) return; connectToDatabase(dbFileFullPath); createModel(); // setUserInterfaceEnabled(true); } void Manager::putRecord(Record* record){ query->clear(); qDebug() << "query->clear();"; query->prepare("SELECT MAX(r.id) AS 'number_of_records' FROM records AS 'r';"); query->exec(); // if (!query->isActive()) // QMessageBox::warning(this, tr("Database Error"), query->lastError().text()); query->next(); QString count = QString::number(query->value(0).toInt() + 1); // if (id.isEmpty() || lastName.isEmpty() || firstName.isEmpty() || occupation.isEmpty() || yeaOfAdmission.isEmpty()) // return; query->clear(); qDebug() << "Добавление строки:" << query->prepare("INSERT INTO records(id, name, username, password, url, note, time)" \ "VALUES(:id, :name, :username, :password, :url, :note, :time)"); // query->prepare("INSERT INTO employees(id, last_name, first_name, occupation, year_of_admission) " \ // "VALUES(:id, :last_name, :first_name, :occupation, :year_of_admission)"); query->bindValue(":id", record->getId()); query->bindValue(":name", record->getName()); query->bindValue(":username", record->getUsername()); query->bindValue(":password", record->getPassword()); query->bindValue(":url", record->getURL()); query->bindValue(":note", record->getNote()); query->bindValue(":time", record->getTime()); query->exec(); } void Manager::updateRecord(){} void Manager::deleteRecord() { // if (ui->spinBoxID->text().isEmpty()) // return; QString id = "zzz"; // QString id = ui->spinBoxID->text(); query->clear(); qDebug() << "Удаление строки:" << query->exec(QString("DELETE FROM recordsn3ox WHERE id = %1;").arg(id)); model->select(); // наполнить модель данными из таблицы, учитывая условия фильтрации и сортировки. } void Manager::connectToDatabase(const QString &dbName) { m_db = QSqlDatabase::addDatabase("QSQLITE"); // соединение объекта базы данных с СУБД. //m_db.setDatabaseName(dbName); // определение имени базы данных. m_db.setDatabaseName("my_db.sqlite"); // определение имени базы данных. if (!m_db.open()) // проверка на ошибку при открытии или создании базы данных. throw "Can't open database!"; query = new QSqlQuery(m_db); // создание объекта для запроса. if (!m_db.tables().contains("records")) // если в базе не существует таблица records { // то создание таблицы records: qDebug() << "В базе не существует таблица records!"; query->clear(); // очистка запроса. // id // name // username // URL // Note // Time qDebug() << "Создание таблицы records:" << query->exec("CREATE TABLE records(" \ " id TEXT PRIMARY KEY NOT NULL, /* идентификатор */" \ " name TEXT, /* имя */" \ " username TEXT, /* имя пользователя */" \ " password TEXT, /* пароль */" \ " url TEXT, /* web url */" \ " note TEXT, /* примечания */" \ " time INTEGER /* дата добавления */" \ ");"); // исполнение запроса на добавление записи. } } void Manager::createModel() { model = new QSqlTableModel(); // создание редактируемой модели базы данных. model->setTable("employees"); // создание модели таблицы employees. model->select(); // заполнение модели данными. // Выбор стратегии сохранения изменений в базе данных: model->setEditStrategy(QSqlTableModel::OnFieldChange); // сохранение происходит при переходе к другому полю. // ui->tableViewEmployees->setModel(model); // соединение модели и ее табличного представления в форме. // model->setHeaderData(0, Qt::Horizontal, tr("Код")); // model->setHeaderData(1, Qt::Horizontal, tr("Фамилия")); // model->setHeaderData(2, Qt::Horizontal, tr("Имя")); // model->setHeaderData(3, Qt::Horizontal, tr("Род занятий")); // model->setHeaderData(4, Qt::Horizontal, tr("Год поступления")); }