[英]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.