Credentials_manager/PasswordManager/manager.cpp
2021-12-24 16:58:36 +03:00

117 lines
5.3 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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("Год поступления"));
}