Ich baue eine QT-Anwendung, die Abfragen auf einer MySQL-Datenbank machen. Wenn ich query.exec("call SelectUsersPhotos()")
mache, bekomme ich die Antwort ganz gut, aber wenn ich die Abfragezeichenkette auf prepare
als Show auf dem Code unten setze, gibt die Datenbank keine Werte zurück und auch wirft es keine Fehler.Qt mysql Abfrage vorbereiten funktioniert nicht
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;
}
Ressourcen: http://qt.developpez.com/doc/4.6/qsqlquery/
query.prepare gibt sofort true zurück und es gibt immer noch nichts zurück. –
Warum riskieren Sie für immer eine Schleife, wenn die Abfrage ungültig ist und - wie wahrscheinlich - nach einiger Zeit nicht plötzlich gültig wird? Scheint wie ein schlechter Rat. Und verweist '! =' Adressen von Werten. Ein Ref kann weg optimiert werden, ersetzt durch einen Wert ohne Adresse. Wenn die Adresse des Referenten genommen wird, ist das anders. Genauer gesagt: Ein 'const &' kann sich gut an einen temporären rvalue binden, der lebenslang auf den Bereich der Referenz erweitert wird. z.B. hast du nie einen rvalue an eine Funktion übergeben, die 'std :: string' verwendet? Es funktioniert gut. Und deshalb hängt es nicht mit der gestellten Frage zusammen. –