关于QSqlQuery::value: not positioned on a valid record
前提:win xp环境; Qt SDK版本v1.1.3; 库文件版本4.7.4;
数据库驱动类型: QODBC
有两次遇到过如题所述的warning.
均自行解决.
出现场合与解决方法如下:
第一次, 使用QSqlRelationalTableModel模型.将数据库的第一列设置为QSqlRelation
model->setRelation( 0, QSqlRelation( "name_of_sql", "id", "name"));//warning
然后在利用QSqlRelationalTableModel编辑数据库时出现如题报警.
解决方法:
不把数据库第一列设为QSqlRelation
还有一次,建立数据库时,将第二列设为primary key
然后在编辑数据库时出现如题报警.
解决方法:
把第一列设为primary key
不是很懂发生这种问题的原理,但是都误打误撞的解决了.分享给大家. --------------------编程问答-------------------- 另外,建立数据库时需要小心关键字.诸如level,value,均不可以用作数据库的名字 --------------------编程问答-------------------- 我知道,不少人会犯这种错误。QSqlQuery返回的数据集,record是停在第一条记录之前的。所以,你获得数据集后,必须执行next()到第一条记录,这时候record才是有效的。否则,exec完直接value肯定报这个错 --------------------编程问答-------------------- 太感谢了,正好遇到这个问题 --------------------编程问答-------------------- 为了解决这个问题,也可以在获取记录集之后,将光标移动到第一条记录上,就没有问题了
尝试调用first(). --------------------编程问答-------------------- foxyz
正解
补充:移动开发 , Qt