void mainWindow::mondayOpen() { mainDB.setDatabaseName("Monday.sqlite"); mainDB.open(); if(mainDB.isOpen()) { qDebug() << "YEAH"; }}
void mainWindow::saveDatabase() { QSqlQuery *insertQ; insertQ = new QSqlQuery(mainDB); insertQ->exec("SELECT * FROM Monday"); int num = 0; while(num < row) { QTextEdit *cellTextEdit = static_cast <QTextEdit *> (tbl->cellWidget (num, 0)); QString test = cellTextEdit->toPlainText(); insertQ->prepare("INSERT INTO Monday VALUES (:monday_q, :monday_t);"); insertQ->bindValue(":monday_q", cellTextEdit->toPlainText()); insertQ->bindValue(":monday_t", cellTextEdit->toPlainText()); insertQ->exec(); num++; }}
insertQ->exec("SELECT * FROM Monday");
insertQ->prepare("INSERT INTO Monday (FIELD_NAME1, FIELD_NAME2) VALUES (:monday_q, :monday_t)");
...// Для удобства и экономии кода обобщил отправку запросов,// а т.к. соединение у меня всегда одно, QSqlQuery создаю с дэфолтным// конструктором static QSqlQuery sendQuery(QString query) { QSqlQuery sqlQuery; if(!sqlQuery.exec(query)) qDebug() << "Ошибка:" << sqlQuery.lastError().text(); return sqlQuery; }...const QString nameTable = "Files";...// Запросы вынес в одно место static QString createTable() { return QString("CREATE TABLE %1(" "id INTEGER PRIMARY KEY AUTOINCREMENT, " "name TEXT, " "format TEXT, " "path TEXT, " "arguments TEXT, " "comment TEXT, " "tags TEXT" ");").arg(nameTable); } static QString deleteTable() { return QString("DROP TABLE %1").arg(nameTable); } static QString insertToTable() { return QString("INSERT INTO " + nameTable + "(name, format, path, arguments, comment, tags)" + "VALUES('%1', '%2', '%3', '%4', '%5', '%6');"); } static QString updateCellTable() { return QString("UPDATE " + nameTable + " SET %1 = '%2' WHERE id='%3';"); }...// Пример использование выше описанного// Создание таблицыsendQuery(createTable());// Изменить значение ячейки таблицыQString query = updateCellTable().arg(nameColumn).arg(value).arg(id);sendQuery(query);// Вставка строки QString query = insertToTable() .arg("Файл") .arg("txt") .arg("С:\Файл.txt") .arg("") .arg("текстовый файл") .arg(""); QSqlQuery sqlQuery = sendQuery(query); int lastID = sqlQuery.lastInsertId(); qDebug() << lastID;
enum UColumns { Check, Name, Format, Path, Arguments, Comment, Tags, Size };...static void insertToDB(QList <QStandardItem *> *list) { QString insert = UQueryPatterns::insertToTable(); QString query = insert .arg(list->at(Name)->text()) .arg(list->at(Format)->text()) .arg(list->at(Path)->text()) .arg(list->at(Arguments)->text()) .arg(list->at(Comment)->text()) .arg(list->at(Tags)->text()); QSqlQuery sqlQuery = sendQuery(query); list->at(Name)->setData(sqlQuery.lastInsertId(), Qt::UserRole); }...void UConteinerExes::addFile(QString path){ QList <QStandardItem *> list; for(int i = 0; i < Size; i++) { QStandardItem item; list << &item; } QStandardItem *itemCheck = new QStandardItem(); itemCheck->setCheckable(true); itemCheck->setCheckState(Qt::Checked); itemCheck->setEditable(false); QStandardItem *itemName = new QStandardItem(); itemName->setText(QFileInfo(path).baseName()); itemName->setIcon(QFileIconProvider().icon(QFileInfo(path))); itemName->setEditable(false); QStandardItem *itemFormat = new QStandardItem(); itemFormat->setTextAlignment(Qt::AlignCenter); itemFormat->setText(QFileInfo(path).suffix()); itemFormat->setEditable(false); QStandardItem *itemPath = new QStandardItem(); itemPath->setText(QDir::toNativeSeparators(path)); itemPath->setToolTip(itemPath->text()); itemPath->setEditable(false); QStandardItem *itemArguments = new QStandardItem(); itemArguments->setEditable(isExe(itemFormat->text())); QStandardItem *itemComment = new QStandardItem(); QStandardItem *itemTags = new QStandardItem(); list[Check] = itemCheck; list[Name] = itemName; list[Format] = itemFormat; list[Path] = itemPath; list[Arguments] = itemArguments; list[Comment] = itemComment; list[Tags] = itemTags; fileModel.appendRow(list); insertToDB(&list);}