簡體   English   中英

QT應用程序無法解釋的崩潰與Sqlite INSERT函數

[英]QT Application Unexplainable crash with Sqlite INSERT function

我正在做卡路里計數器應用程序。 我是QT的新手,這個錯誤很難找出。 我已經思考了3小時多,什么也沒有。 這是導致錯誤的功能

 bool MainWindow::saveDB()
{
    loading = true;
    QSqlQuery q(db);
    q.exec("DELETE FROM Food");
    q.prepare("INSERT INTO Food(id,Name,Carbohydrates,Fats,Proteins,Calories) VALUES(:id,:n,:c,:f,:p,:cal)");
        for(int i = 0; i < 1; i++)
        {
                     q.bindValue(":n",ui->tableWidget->item(i,1)->text());
                     q.bindValue(":c",ui->tableWidget->item(i,2)->text().toInt());
                     q.bindValue(":f",ui->tableWidget->item(i,3)->text().toInt());
                     q.bindValue(":p",ui->tableWidget->item(i,4)->text().toInt());
                     q.bindValue(":cal",ui->tableWidget->item(i,5)->text().toInt());
                     q.bindValue(":id",ui->tableWidget->item(i,0)->text().toInt());
             if(!q.exec())
             {
                 qDebug() << q.lastError().text();
                 loading = false;
                 return false;
             }
        }
    loading = false;
    return true;
}

應該清除數據庫,然后清除數據庫,然后從tableWidget插入值。

應用輸出

 The program has unexpectedly finished.
D:\Calc\build-CalcProto-Desktop_Qt_5_4_1_MinGW_32bit-Debug\debug\CalcProto.exe crashed

db是我的QSqlDatabase對象。 數據顯示在tableWidget中,該表有6列(id,Name,Carbohydrates,Fats,Proteins,Calories),qDebug不顯示任何消息。我嘗試了數十種變體,但總是崩潰。 還有一個加載數據功能,可以完美運行,因此數據庫本身很好。 更新功能工作正常,但INSERT總是失敗。 不知道怎么了。 你能告訴我出什么事了嗎?

弄清楚了,還需要1小時:D數據庫中的“ id”列具有自動遞增功能,即使它們相等,它也會與tableWidget數據發生沖突。 切勿嘗試插入具有自動增量功能的數據列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM