在Qt中使用數據庫的常見報錯

  1. 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肯定報這個錯.

 

  1. 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),進行關聯就可以了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章