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'的右值?它工作得很好。因此它与被问到的问题无关。 –