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