Unsolved UPDATE tabela set wiersz WHERE id=varible
-
Cześć
Mam problem z edycją tabeli w bazie danych. Proszę o pomoc w rozwiązaniu.
Chciałbym aby została zmieniona wartość w komórce w której id jest równe zmiennej.
pozwoli mi to użyć funkcji, która skróci cały kod.
W tej chwili powtarzam kilka razy ten sam kawałek kodu tylko z innym id.
kod wygląda następująco:oid MainWindow::on_tzdz_clicked() { QSqlQuery updateQuery = QSqlQuery(db); query.first(); while(query.next()) { updateQuery.exec("UPDATE wezwanie SET kontrolna = 0,pierwsza = 0, problemj = 0 WHERE id=8"); ui->statusBar->showMessage(QString("Koniec Kontroli"+ updateQuery.lastError().text())); } }
-
Nie wiem, czy dokładnie o to Ci chodzi:
void MainWindow::on_tzdz_clicked() { int id = 8; QSqlQuery updateQuery = QSqlQuery(db); updateQuery.prepare("UPDATE wezwanie SET kontrolna = 0,pierwsza = 0, problemj = 0 WHERE id=%id"); updateQuery.bindValue(QStringLiteral("%id"), id); updateQuery.exec(); ui->statusBar->showMessage(QString("Koniec Kontroli"+ updateQuery.lastError().text())); }
W tym przykładzie pokazałem Ci jak wstawić zmienną do zapytania. Oczywiście dla własnego użytku w przypadku kilku zmiennych możesz je wstawić z jakiejś listy w jednym zapytaniu. Z tym, że nazwa bindValue dla każdej wartości musi być inna, tzn. nie możesz mieć kilku "%id" w jednym zapytaniu, ale możesz zastąpić to w pętli wartościami %id0, %id1 itd. Wtedy zapytanie będzie miało zawartość:
"UPDATE wezwanie SET kontrolna = 0,pierwsza = 0, problemj = 0 WHERE id=%id0 or id=%id1"
-
Dokładnie o to chodziło dzięki.