no such table unable to execute statement, хотя все данные верны

При создании приложения случилась проблема. Программа уверяет меня, что я дурак, и у меня не существует таблицы, хотя она существует.

#include "obnovlenie_1.h"
#include "ui_obnovlenie_1.h"
#include <QString>
#include <QMessageBox>
#include <QtSql>
#include <QFileInfo>
#include <QDebug>
#include <QSqlTableModel>
#define Path_To_DBskl "C:/Users/makis/Documents/build-Novaya_Apteka2-5_15_12_mingw64_static-Debug/sqlfolder/sklad.db"

obnovlenie_1::obnovlenie_1(QWidget *parent)
    : QDialog(parent)
    , ui(new Ui::obnovlenie_1)
{
    ui->setupUi(this);
    QSqlDatabase dbskl = QSqlDatabase::addDatabase("QSQLITE", "BASE");
    dbskl.setDatabaseName(Path_To_DBskl);
    QFileInfo checkFile (Path_To_DBskl);
    dbskl.open();
    if(dbskl.open()){
        qDebug("open sklad");
    } else {
        qDebug("not open sklad");
    }
}

obnovlenie_1::~obnovlenie_1()
{
    delete ui;
}

void obnovlenie_1::on_pushButton_clicked()
{
    dbskl.open();
    if(dbskl.open()){
        qDebug("sklad open");
        }
    else{
        qDebug("not open");
    }

    QSqlQuery query(QSqlDatabase::database("sklad"));
    QString update_sql = "Select * from Skladik;";
    model = new QSqlTableModel(this, dbskl);
    query.prepare(update_sql);

    QMessageBox::information(this,"",query.lastError().text());
    this->close();

Вкратце по коду, то он должен выполнять посредника при замене файлов в базе данных, т.е. есть в приложении кнопка изменить, при ее нажатие появляется окошко(вот как раз код выше, это код от окошка), в этом окошке будут данные которые надо поменять, но я это пока что убрал, потому что не работает, и оставил обычный select. У меня в программе получается два qDebug, первый работает хорошо, а второй говорит что не работает, хотя я прямо над вторым qDebug`ом указываю, что я эту базу данных открываю. После этого дебага выполняется запрос, в самой программе мне выдает ошибку no such table: Skladik unable to execute statement, ничего в таблице не изменяется и окно просто закрывается(ну это программно). Ну, и я решил обратиться сюда, какие будут предложения, и будут ли?


Ответы (1 шт):

Автор решения: Lotlt

я смог решить все свои проблемы самостоятельно) Теперь у меня заносятся данные. А конкретно проблема в том, что я сам запрос UPDATE делал, но не приводил его в исполнение, и он просто как бы улетал. В конце я дописал query.exec(); и все заработало.

    void obnovlenie_1::on_pushButton_clicked()
{
    dbskl.open();
    if(dbskl.open()){
        qDebug("sklad open");
        }
    else{
        qDebug("not open");
    }
    QSqlQuery query(dbskl);
    model = new QSqlTableModel(this, dbskl);
    query.prepare("UPDATE Skladik SET Nazvanie=:Nazvanie, Kolichestvo=:Kolichestvo, Proizvoditel=:Proizvoditel Where Kod= :Kod;");
    query.bindValue(":Kod", ui->kod_change->text());
    query.bindValue(":Nazvanie", ui->name_cahnge->text());
    query.bindValue(":Kolichestvo", ui->kolvo_change->text());
    query.bindValue(":Proizvoditel", ui->manuf_change->text());
    query.exec();
    QMessageBox::information(this,"",query.lastError().text());
    this->close();
}
→ Ссылка