首页 文章

QSqlQuery无法正常工作

提问于
浏览
0

所以基本上我有这个问题,我不能执行我的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 中声明,这一部分都在运行 .

在这里,我得到一个表单,它返回有关我想在数据库中创建的员工的一些数据 . databaseCheck 是一个bool,告诉我数据库是否正确连接 . 在这种情况下,这些变量 namesurname 等在 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检查数据库,表 employees 完全为空 . 有谁能够帮我?

1 回答

  • 0

    你的SQL似乎是正确的,最好的方法可能是写这样的东西 .

    if (!query.exec())
          qDebug() << query.lastError();
    

相关问题