• 11385阅读
  • 10回复

QSqlQuery::value: not positioned on a valid record [复制链接]

上一主题 下一主题
离线zq123456
 
只看楼主 正序阅读 楼主  发表于: 2011-07-31
   两个数据表的声明如下:
query.exec(QObject::tr("create table users (Uid int primary key,"                               "Uname varchar(10))"));    query.exec(QObject::tr("insert into users values(0,'katy')"));    query.exec(QObject::tr("insert into users values(1,'cindy')"));    query.exec(QObject::tr("insert into users values(2,'小王')"));

    query.exec(QObject::tr("create table DM (DMid int primary key,"                           "Uid int"                           "FBG float not null,"                           "PBG float not null)"));    query.exec(QObject::tr("insert into DM  values(1,1,'10','20')"));
void Widget::on_pushButton_clicked(){    QSqlQuery query;    QString name=(ui->lineEdit->text());    struct userstruct id=us->selectusers(name);    qDebug()<<id.Uid<<id.Uname;}void Widget::on_pushButton_2_clicked(){    QSqlQuery query;    QString name=(ui->lineEdit_2->text());    struct hypertensionstruct id=us->selecthypertension(name);    qDebug()<<id.HPid<<id.Uid<<id.highPressure<<id.lowPressure;}
为什么第一张表能查出来,第二张表的却只能是QSqlQuery::value: not positioned on a valid record!!!!!!求高手求救,急急急!!!
离线dongchen
只看该作者 10楼 发表于: 2012-12-06
楼主的问题 解决没有   我也出现相同的情况了。
离线wxj120bw

只看该作者 9楼 发表于: 2011-08-02
回 8楼(zq123456) 的帖子
重新编译下 或者selectusers函数的query.next(); 注销掉
离线zq123456
只看该作者 8楼 发表于: 2011-08-02
一样的
离线wxj120bw

只看该作者 7楼 发表于: 2011-08-01
selecthypertension函数//query.next(); 注释去掉。 看下效果
离线zq123456
只看该作者 6楼 发表于: 2011-08-01
没什么不一样啊,select()弄出来也一样诶,我太郁闷了,我建了几张表,可是只有第一张的数据能查出来,其他几张表的估计都没有写进数据库里,都无法查出
离线wxj120bw

只看该作者 5楼 发表于: 2011-08-01
你发现 selecthypertension函数和selectusers函数 有什么不一样吗
离线zq123456
只看该作者 4楼 发表于: 2011-08-01
  1. struct hypertensionstruct
  2. {int HPid;
  3. int Uid;
  4. QString highPressure;
  5. QString lowPressure;
  6. };

  1. struct hypertensionstruct users::selecthypertension(QString highPressure)
  2. {
  3. QSqlQuery query;
  4. query.prepare("select * from hypertension where highPressure=?");
  5. query.addBindValue(highPressure);
  6. query.exec();
  7. //query.next();
  8. struct hypertensionstruct p;
  9. p.HPid=query.value(0).toInt();
  10. p.Uid=query.value(1).toInt();
  11. p.highPressure=query.value(2).toString();
  12. p.lowPressure=query.value(3).toString();
  13. return p;
  14. }

  1. struct userstruct
  2. {int Uid;
  3. QString Uname;
  4. };

  1. struct userstruct users::selectusers(QString name)
  2. {
  3. QSqlQuery query;
  4. query.prepare("select * from users where Uname=?");
  5. query.addBindValue(name);
  6. query.exec();
  7. query.next();
  8. struct userstruct p;
  9. p.Uid=query.value(0).toInt();
  10. p.Uname=query.value(1).toString();
  11. return p;
  12. }


离线wxj120bw

只看该作者 3楼 发表于: 2011-08-01
回 2楼(zq123456) 的帖子
selecthypertension函数,selectusers函数再贴下
离线zq123456
只看该作者 2楼 发表于: 2011-08-01
  1. query.exec(QObject::tr("create table users (Uid int primary key,"
  2. "Uname varchar(10))"));
  3. query.exec(QObject::tr("insert into users values(0,'katy')"));
  4. query.exec(QObject::tr("insert into users values(1,'cindy')"));
  5. query.exec(QObject::tr("insert into users values(2,'小王')"));
  1. query.exec(QObject::tr("create table hypertension (HPid int primary key,"
  2. "Uid int,"
  3. "highPressure varchar(10) not null,"
  4. "lowPressure varchar(10) not null)"));
  5. query.exec(QObject::tr("insert into hypertension values(1,1,'10','20')"));


  1. void Widget::on_pushButton_clicked()
  2. {
  3. QSqlQuery query;
  4. QString name=(ui->lineEdit->text());
  5. struct userstruct id=us->selectusers(name);
  6. qDebug()<<id.Uid<<id.Uname;
  7. }
  8. void Widget::on_pushButton_2_clicked()
  9. {
  10. QSqlQuery query;
  11. QString name=(ui->lineEdit_2->text());
  12. struct hypertensionstruct id=us->selecthypertension(name);
  13. qDebug()<<id.HPid<<id.Uid<<id.highPressure<<id.lowPressure;
  14. }



离线wxj120bw

只看该作者 1楼 发表于: 2011-07-31
回 楼主(zq123456) 的帖子
用[code][/code]编辑下你的代码 还有打印下你界面的内容和sql语句
快速回复
限100 字节
 
上一个 下一个