проблема с подключением Sqlite в мой проект в QT Creator
я пытаюсь подключить sqlite к qt creator там мой проект, и я сделал вот такой код:
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->boxGrade->hide();
ui->inTask->hide();
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("./myDB.db");
if(!db.open()) {
qDebug("Подключение к бд не установленна");
}else {
qDebug("бд подключена");
}
}
я запускаю, и вижу: "бд подключена
" но, когда я меняю "db.setDatabaseName("./myDB.db");
" на "db.setDatabaseName("./mysdvdfjhvberlvDB.db");
" (то-есть рандомное название бд) то пишит: "бд подключена
" и это очень странно. Вот мой проект:
❯ tree TaskList
TaskList
├── build
│ └── Desktop-Debug
│ ├── main.o
│ ├── mainwindow.o
│ ├── Makefile
│ ├── moc_mainwindow.cpp
│ ├── moc_mainwindow.o
│ ├── moc_predefs.h
│ ├── TaskList
│ └── ui_mainwindow.h
├── main.cpp
├── mainwindow.cpp
├── mainwindow.h
├── mainwindow.ui
├── myDB.db
├── TaskList.pro
├── TaskList.pro.user
└── TaskList.pro.user.edfc540
3 directories, 16 files
можно заметить что тут только один myDB.db. ну и вот еще, если пригодиться:
CREATE TABLE "task" (
"Name" TEXT
)
код, который должен работать с бд:
void MainWindow::closeEvent(QCloseEvent *event)
{
QString taskName = ui->inTask->text().trimmed();
if (!taskName.isEmpty()) {
QSqlQuery query;
query.prepare("INSERT INTO tasks (name) VALUES (:name)");
query.bindValue(":name", taskName);
if (!query.exec()) {
qDebug() << "Ошибка при вставке данных:" << query.lastError().text();
} else {
qDebug() << "Данные успешно добавлены в бд";
}
}
QMainWindow::closeEvent(event);
}
тут он должен в бд записывать inTask, это QLineEdit
Ответы (1 шт):
Когда вы подключаетесь к несуществующей базе, SQLite создает новую базу данных с этим именем, поэтому вы видите сообщение бд подключена
.
Чтобы убедиться, что вы подключаетесь к существующей базе данных, вы можете проверить, существует ли таблица task
в базе данных, используя метод QSqlDatabase::tables()
.