QT5 和 SQLite3 "No query Unable to fetch row"



我有一个问题,我的SQLite数据库QT5。我有表称为"我的表",我试图保存,更改或加载数据在那里。表看起来像这样(CODE):

"mytable" ("id" INTEGER PRIMARY KEY  NOT NULL , "name" VARCHAR NOT NULL , "akcie" INTEGER NOT NULL )

然后我尝试像这样使用这个数据库(CODE):

void MainWindow::on_pushButton_save_clicked()
{
    QString jmeno, IDcko, ak;
    IDcko = ui->lineEdit_ID->text();
    jmeno = ui->lineEdit_Name->text();
    ak = ui->lineEdit_Akcie->text();
    open_connection();
    QSqlQuery query;
    query.prepare("INSERT INTO mytable(id, name, akcie) VALUES(id= '"+ IDcko +"', name= '"+ jmeno +"', akcie= '"+ ak +"')");
    if(query.exec())
    {
        QMessageBox::information(this, tr("SAVED"), tr("Some text."));
        close_connection();
    }
    else
    {
        QMessageBox::critical(this, tr("NOT SAVED"), query.lastError().text());
        qDebug() << query.lastError().text();
    }
}

在同一个文件中,我像这样打开连接(CODE):

bool MainWindow::open_connection()
{
    QSqlDatabase database;
    database = QSqlDatabase::addDatabase("QSQLITE");
    database.setDatabaseName("‪..\added\test_table.sqlite");
    if(!database.open())
    {
        qDebug() << "not opened connection";
        return false;
    }
    else
    {
        qDebug() << "opened connection";
        return true;
    }
}

和我仍然得到错误:"没有查询无法获取行",我一直在寻找答案真的很难,但没有任何工作。可能是因为一些包括或我做错了什么?

提前感谢您的帮助!

您没有正确准备查询。使用如下绑定:

query.prepare("INSERT INTO mytable(id, name, akcie) VALUES(:id, :name, :akcie)");
query.bindValue(":id", IDcko);
query.bindValue(":name", jmeno);
query.bindValue(":akcie", ak);    

您没有执行查询。你应该使用这样的绑定:

query.prepare("INSERT INTO mytable(id, name, akcie) VALUES(?, ?, ?)");
query.addBindValue(IDcko);
query.addBindValue(jmeno);
query.addBindValue(ak); 
query.exec();

或者,像@Miki提到的,借助query.bindValue(":id", IDCko)函数。最后一种方法是直接编写查询文本(不需要单独调用query.exec():

)。
query("INSERT INTO mytable(id, name, akcie) VALUES(id= '"+ IDcko +"', name= '"+ jmeno +"', akcie= '"+ ak +"')");

相关内容

  • 没有找到相关文章

最新更新