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.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.