Qt SQLite没有查询或参数计数不匹配

Qt SQLite no query or parameter count mismatch

本文关键字:参数 不匹配 查询 SQLite Qt      更新时间:2023-10-16

在接收两个不同的错误之间摇摆不定。

void summary::on_pushButton_saveSummary_clicked()   
{
if(db.open())
{
query.exec("insert or replace into [PN:"+partNum+" CN:"+chargeNum+"](total, defects, rust) values(1, 2, 3)");
if (!query.exec())
{
qDebug() << query.lastError();
qDebug() << query.exec()<<endl;
}
}
else
{
qDebug() << db.lastError();
}
}

上面给出了错误:QSqlError(","无法获取行","无查询"(

While:

void summary::on_pushButton_saveSummary_clicked()
{
if(db.open())
{
qDebug() << "db open";
int a = 3;
int b = 1;
int c = 3;
query.prepare("insert into [PN:"+partNum+" CN:"+chargeNum+"](total, defects, rust) values(:total, :defects, :rust)");
query.bindValue(":total", a);
query.bindValue(":defects", b);
query.bindValue(":rust", c);
if (!query.exec())
{
qDebug() << query.lastError();
qDebug() << query.exec()<<endl;
}
}
else
{
qDebug() << db.lastError();
}
}

收益率:QSqlError(","参数计数不匹配","(

建造商有:

db.setDatabaseName("/home/igraves/Databases/testdb");
db.open();
QString partNum = "134345";
QString chargeNum = "3452";
query.prepare("create table if not exists [PN:"+partNum+" CN:"+chargeNum+"](total int, defects int, rust int)");
query.exec();

表正在创建中,我可以看到它。所以我在猜测语法?尽管它是Qt维基写的…

编辑:添加一些.h内容

QString partNum;
QString chargeNum;
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
QSqlQuery query;

答:我的QString变量是临时的,在构造函数完成后,它们就超出了范围。更改了我的.h

QString partNum = "124124";
QString chargeNum = "234234";

我至少看到以下错误:

  • 您不设置数据库路径
  • 创建表时不要打开数据库
  • "134345"answers"3452"被分配给临时变量,而不是类成员

考虑到以上情况,构造函数中必须包含以下内容:

partNum = "134345";
chargeNum = "3452";
db.setDatabaseName("/path/of/database.db");
if(db.open())
query.exec(QString("create table if not exists [PN:%1 CN:%2](total int, defects int, rust int)")
.arg(partNum)
.arg(chargeNum));