Qt QSqlQuery.next()返回false,但数据库中有数据。为什么?
我的sqlite数据库中有数据。Insert语句已成功执行。但当我想从数据库中获取数据时,我什么也没发现,这个错误是“QSqlError”(“,”,“)”。我已检查我的查询是否处于活动状态且无效。如何解决这个问题 这是我的密码:Qt QSqlQuery.next()返回false,但数据库中有数据。为什么?,qt,sqlite,Qt,Sqlite,我的sqlite数据库中有数据。Insert语句已成功执行。但当我想从数据库中获取数据时,我什么也没发现,这个错误是“QSqlError”(“,”,“)”。我已检查我的查询是否处于活动状态且无效。如何解决这个问题 这是我的密码: void FindDialog::find() { QString roll_number = ui->txt_RN->text (); int roll = roll_number.toInt (); const QStrin
void FindDialog::find()
{
QString roll_number = ui->txt_RN->text ();
int roll = roll_number.toInt ();
const QString findstmnt = "SELECT Roll_Number, Name FROM student_info WHERE Roll_Number = :roll";
scon->getQuery ()->prepare (findstmnt);
scon->getQuery ()->bindValue ("roll", roll);
if(scon->getQuery ()->exec ()){
qDebug() << "Active: " << scon->getQuery ()->isActive ();
qDebug() << "Valid: " << scon->getQuery ()->isValid ();
if(scon->getQuery ()->isActive ()){
if(scon->getQuery ()->next ()){
qDebug() << "Has Data: " << scon->getQuery ()->next ();
} else {
qDebug() << scon->getQuery ()->lastError ();
}
}
} else {
qDebug() << scon->getQuery ()->lastError ();
}
void FindDialog::find()
{
QString roll_number=ui->txt_RN->text();
int roll=roll_number.toInt();
const QString findstmnt=“从学生信息中选择卷号、名称,其中卷号=:Roll”;
scon->getQuery()->prepare(findstmnt);
scon->getQuery()->bindValue(“滚动”,滚动);
if(scon->getQuery()->exec()){
qDebug()是活动的();
qDebug()是有效的();
if(scon->getQuery()->isActive()){
if(scon->getQuery()->next()){
qDebug()下一步();
}否则{
qDebug()getQuery()->lastError();
}
}
}否则{
qDebug()getQuery()->lastError();
}
参数的名称不是roll
,而是:roll
将值绑定到错误的参数名称时,实际参数的初始值为NULL
。
因此,查询将永远找不到任何行,因为没有值与
NULL
进行比较。您缺少一个冒号,它应该是bindValue(“:roll”,roll)
。谢谢,但我不明白问题出在哪里。看起来是一样的。抱歉。谢谢。我已连接此数据库。是否有数据:false QSqlQuery::value:未定位在有效记录上是否有数据:“”Active:true-Valid:false听起来像是一个完全无关的问题…对不起,先生,在重新编译后,我从数据库中没有得到任何值。我在更正后得到了这个值。数据库已连接。数据:false QSqlQuery::value:未定位在有效记录上的数据有:“Active:true-Valid:false”