C++ 未定位在有效记录上

C++ 未定位在有效记录上,c++,sql,qt,C++,Sql,Qt,我是新来的 我的应用程序有问题。 这是我的代码: voidDialog::on_tableView_activated(constQModelIndex&index) { QString valu=ui->tableView->model()->data(index).toString(); QSqlQuery qryview; qryview.prepare("SELECT* FROM employ where nomper='"+valu+"

我是新来的 我的应用程序有问题。 这是我的代码:

voidDialog::on_tableView_activated(constQModelIndex&index)
{
    QString valu=ui->tableView->model()->data(index).toString();
    QSqlQuery qryview;
    qryview.prepare("SELECT* FROM employ where nomper='"+valu+"' or prenomper='"+valu+"'");
    ui->lineEdit_2->setText(qryview.value(0).toString());
    ui->lineEdit_3->setText(qryview.value(1).toString());
}
我想在
QLineEdit
中恢复数据

当我使用SQLite时,没有问题。 但当我使用MySQL时,lineEdit中不会显示任何结果

qsqlquery::值:未定位在有效记录上


问题是您试图在不初始化行的情况下检索该行。正确的方法是使用query.next(),下面是代码示例:

 QString valu=ui->tableView->model()->data(index).toString();
QSqlQuery qryview;
qryview.prepare("SELECT* FROM employ where nomper='"+valu+"' or prenomper='"+valu+"'");
qryview.exec();
while(qryview.next()) {
ui->lineEdit_2->setText(qryview.value(0).toString());
 ui->lineEdit_3->setText(qryview.value(1).toString());
}

如果不打印lastQueryError并查看查询是否正确执行,这应该是可行的

我认为
SQLite
会立即执行查询,因为它只支持
prepare()
中的一条语句。。因此,对于MySQL,尝试在
prepare()