QSqlQuery 不工作
QSqlQuery not working
所以我基本上遇到了这个问题,我无法执行我的 QsqlQuery。
我连接到一个 SQLite 数据库,我已经检查它是否真的连接了。
QString databaseName = QFileDialog::getOpenFileName(this,tr("Open database"),
"",
tr("Databáze (*.db)"));
mydb = QSqlDatabase::addDatabase("QSQLITE");
mydb.setDatabaseName("databaseName");
if (!mydb.open()) {
ui->statusBar->showMessage("Databáze nebyla připojena!",2000);
databaseCheck = false;
}
else if (mydb.open()) {
ui->statusBar->showMessage("Databáze byla úspěšně připojena.",2000);
databaseCheck = true;
}
这是 Mainwindow.cpp
中设置数据库连接的部分代码。数据库在mainwindow.h
中声明,所有功能都在这部分。
这里我得到了一个表格,其中 returns 我想在数据库中创建的一些关于员工的数据。 databaseCheck
是一个布尔值,它告诉我数据库是否已正确连接。在这种情况下,那些变量 name
、surname
等在 mainwindow.h
中声明为 QString
。
if (databaseCheck) {
form = new Form(this);
form->setWindowTitle("Formulář informací o zaměstnanci.");
form->exec();
name = form->getName();
surname = form->getSurname();
id = form->getId();
date = form->getDate();
telephone = form->getTelephone();
salary = form->getSalary();
state = form->getState();
QSqlQuery query(mydb);
query.prepare("INSERT INTO employees (jmeno,prijmeni,datumnarozeni,telefon,plat,stav) "
"VALUES (:name, :surname, :date, :telephone, :salary , :state)");
query.bindValue(":name", name);
query.bindValue(":forename", surname);
query.bindValue(":date", date );
query.bindValue(":telephone", telephone);
query.bindValue(":salary", salary);
query.bindValue(":state", state );
query.exec();
}
在我用员工的一些数据填写表格并接受后,它没有向数据库发送任何内容。我正在使用 DB Browser for SQLite 检查数据库,table employees
完全是空的。有人可以帮助我吗?
您的 SQL 似乎是正确的,最好的方法可能是这样写。
if (!query.exec())
qDebug() << query.lastError();
所以我基本上遇到了这个问题,我无法执行我的 QsqlQuery。 我连接到一个 SQLite 数据库,我已经检查它是否真的连接了。
QString databaseName = QFileDialog::getOpenFileName(this,tr("Open database"),
"",
tr("Databáze (*.db)"));
mydb = QSqlDatabase::addDatabase("QSQLITE");
mydb.setDatabaseName("databaseName");
if (!mydb.open()) {
ui->statusBar->showMessage("Databáze nebyla připojena!",2000);
databaseCheck = false;
}
else if (mydb.open()) {
ui->statusBar->showMessage("Databáze byla úspěšně připojena.",2000);
databaseCheck = true;
}
这是 Mainwindow.cpp
中设置数据库连接的部分代码。数据库在mainwindow.h
中声明,所有功能都在这部分。
这里我得到了一个表格,其中 returns 我想在数据库中创建的一些关于员工的数据。 databaseCheck
是一个布尔值,它告诉我数据库是否已正确连接。在这种情况下,那些变量 name
、surname
等在 mainwindow.h
中声明为 QString
。
if (databaseCheck) {
form = new Form(this);
form->setWindowTitle("Formulář informací o zaměstnanci.");
form->exec();
name = form->getName();
surname = form->getSurname();
id = form->getId();
date = form->getDate();
telephone = form->getTelephone();
salary = form->getSalary();
state = form->getState();
QSqlQuery query(mydb);
query.prepare("INSERT INTO employees (jmeno,prijmeni,datumnarozeni,telefon,plat,stav) "
"VALUES (:name, :surname, :date, :telephone, :salary , :state)");
query.bindValue(":name", name);
query.bindValue(":forename", surname);
query.bindValue(":date", date );
query.bindValue(":telephone", telephone);
query.bindValue(":salary", salary);
query.bindValue(":state", state );
query.exec();
}
在我用员工的一些数据填写表格并接受后,它没有向数据库发送任何内容。我正在使用 DB Browser for SQLite 检查数据库,table employees
完全是空的。有人可以帮助我吗?
您的 SQL 似乎是正确的,最好的方法可能是这样写。
if (!query.exec())
qDebug() << query.lastError();