- QSqlQuery::value: not positioned on a valid record
query.prepare("select id,name from employee where name like :inputName");
query.bindValue(":inputName",str);
query.exec();
// QString namestr=query.value(1).toString(); //如果這句放在這裏的話出現上述錯誤
if(query.first())
{
QString namestr=query.value(1).toString(); //放在此處則正確
emit searchButton_clicked(namestr);
}
解決方法:QSqlQuery返回的數據集,record是停在第一條記錄之前的。所以,你獲得數據集後,必須執行next()或first()到第一條記錄,這時候record纔是有效的。否則,exec完直接value肯定報這個錯.
- Error: Fail to create table. QSqlError(-1, “Driver not loaded”, “Driver not loaded”)
QSqlDatabase db;
db = QSqlDatabase::database("first");
QSqlQuery sql_query(db);
解決方法: 報錯原因是因爲你創建的QSqlQuery對象沒有和前邊的QSqlDatabase對象關聯起來,所以報錯“設備無法加載”。在初始化QSqlQuery對象的時候 QSqlQuery sql_query(db),進行關聯就可以了。