Programm hängt sich bei sql query "INSERT INTO" auf



  • Hi Leute und zwar habe ich des Problem das ich Elemente aus einer QTableWidget in MySql speichern will. Ist das Fach Id leer so soll er ein neuen eintrag machen. ist das Fach voll soll dieser Eintrag geupdatet werden. Jedoch hängt es sich sofort auf.

    [code="cpp"]
    void MainWindow::on_pushButton_4_clicked()
    {

    int i = 0;
    while (i <= ui->tableWidget->rowCount()){
    QTableWidgetItem *id = ui->tableWidget->item(i,0 );
    QTableWidgetItem *label = ui->tableWidget->item(i, 1);
    QTableWidgetItem *time = ui->tableWidget->item(i, 2);
    QTableWidgetItem *enabled = ui->tableWidget->item(i, 3);
    QTableWidgetItem *days = ui->tableWidget->item(i, 4);
    //ui->label->setText(QString::number(id->text().size()));
    if (id->text() == ""){
    QSqlQuery query;
    query.prepare("INSERT INTO alarm (label, time, enabled, days) VALUES(:label, :time, :enabled, :days)");
    query.bindValue(":label", label->text());
    query.bindValue(":time", time->text());
    query.bindValue(":enabled", enabled->text());
    query.bindValue(":days", days->text());
    query.exec();
    i++;
    }
    }
    MainWindow::Alarm_load();
    }
    [code]

    Die Tabelle hat die Einträge Id, Beschriftung, Zeit, Aktiviert und Tage.



  • QSqlQuery query;
    

    Wird vermutlich nicht reichen.
    Da musst Du sicher noch mehr Eigenschaften setzen. Datenbank, Transaktion, ...


  • Mod

    Off by one error: Du brauchst bei RowCount() ein < und kein <=.
    Und du zählst i nur hoch falls id->text() nicht leer ist...

    Die Query ist ok, solange da eine Datenbank schon geöffnet ist, solltest das aber evtl. in eine Transaction packen.


Anmelden zum Antworten