0
我正在構建一個QT應用程序,用於查詢MySQL數據庫。當我做query.exec("call SelectUsersPhotos()")
時,我得到的響應很好,但如果我在prepare
上設置查詢字符串,如下面的代碼所示,數據庫不會返回任何值,也不會引發任何錯誤。Qt mysql查詢準備不起作用
if (db.open()) {
cout << "Querying GetUserPhotos from user " << user->Name << endl;
QSqlQuery query;
query.prepare("call SelectUsersPhotos()");
query.exec();
while (query.next()) {
UserPhoto *userPhoto = new UserPhoto();
userPhoto->UserPhotoId = query.value(0).toInt();
userPhoto->UserId = query.value(1).toInt();
userPhoto->Created = query.value(2).toDateTime();
userPhoto->Name = query.value(3).toString().toStdString();
usersPhotos->push_back(userPhoto);
}
query.finish();
db.close();
cout << "Photos " << usersPhotos->size() << endl;
}
資源:http://qt.developpez.com/doc/4.6/qsqlquery/
query.prepare立即返回true,它仍然不返回任何內容。 –
如果查詢無效並且 - 可能 - 在某些延遲後不會突然變爲有效,那麼爲什麼您會永遠冒險循環?看起來像不好的建議。並引用'!='值的地址。一個ref可以被優化掉,用一個值替換,沒有地址。如果所指對象的地址被採納,那就不同了。更重要的是:'const&'可以很好地綁定到一個臨時右值,這會導致它被終生擴展到引用的範圍。例如你有沒有傳遞一個函數採用'std :: string'的右值?它工作得很好。因此它與被問到的問題無關。 –