Próbowałemsqlquery jeden nazwanych znaczników kilkakrotnie
QSqlQuery query;
query.prepare("DELETE FROM names WHERE id_col = :ID OR id_parent = :ID");
query.bindValue(":ID", idVal);
query.exec();
zakładając, że idVal będą zbindowanych dwa razy, ale wykonanie tego zapytania tylko wiersze z id_parent = idVal zostanie usunięty z id_col = idVal pozostaje przywrĂłconych. Tak więc dopiero drugi raz wiązano idVal z zapytaniem.
Kiedy przepisać go do
QSqlQuery query;
query.prepare("DELETE FROM names WHERE id_col = ? OR id_parent = ?");
query.bindValue(0, idVal);
query.bindValue(1, idVal);
query.exec();
wszystko działało zgodnie z oczekiwaniami.
Czy w QSqlQuery można wielokrotnie używać jednego nazwanego obiektu zastępczego?
** Uwaga boczna: ** To nie odpowiada na twoje pytanie, ale możesz "JOIN" z usunięciem i użyć tylko jednego symbolu zastępczego. Coś takiego jak: 'USUŃ n od nazw n WEJŚCIE DOŁĄCZ DO TYPU p ON p.id_col = n.id_parent WHERE id_col =: ID'. –
Dla potomności, znalazłem hack dla pokrewnego problemu, gdy robisz _select_ instrukcje. Użyj ['z klauzulą'] (https://www.sqlite.org/lang_with.html) w następujący sposób:' z my_id jako (values (: id)) wybierz * z nazw gdzie id = (wybierz * z my_id) lub parent_id = (wybierz * z my_id) ' –
* nieśmiało *: To ograniczenie jest usuwane w qt 5, więc obejścia są potrzebne tylko przed qt 5. –