Parameter count mismatch 请各位大佬帮忙解决

时间:2021-04-13 10:45:34
bool DataBase::createTable()
{
    QSqlDatabase db = QSqlDatabase::database("sqlite2"); //建立数据库连接
    QSqlQuery query(db);
    bool success = query.exec("create table car(id int primary key,buyer_name varchar,"
                              "phone_number varchar,time varchar,money varchar,rate varchar,type varchar,"
                              "carnumber varchar,carduce varchar,month varchar,day varchar)");
    if(success)
    {
        qDebug() << QObject::tr("数据库表创建成功!\n");
        return true;
    }
    else
    {
        qDebug() << QObject::tr("数据库表创建失败!\n");
        return false;
    }
    db.close();

}




//根据ID更新记录
bool DataBase::updateById(int id,QString *m)
{
    QSqlDatabase db = QSqlDatabase::database("sqlite2"); //建立数据库连接
    QSqlQuery query(db);
    query.prepare(QString("update car set buyer_name=?"
                                 "phone_number=?,time=?, money=?,rate=?,type=?"
                                 "carnumber=?,carduce=?, month=?,day=? where id=%1").arg(id));
    qDebug()<<id;
    for(int x=0;x<10;x++)
    {
        if(m[x]!=NULL&&m[x]!="年月日"&&m[x]!="月"&&m[x]!="日")query.bindValue(x,m[x]);
    }
     bool success=query.exec();
     if(!success)
         {
              QSqlError lastError = query.lastError();
              qDebug() << lastError.driverText() << QString(QObject::tr("更新失败"));
         }
    return true;
}


但是使用这个函数时,总会"Parameter count mismatch"
而且实际也没有更新数据库的内容

2 个解决方案

#1


传入的字段个数与数据库中的列个数不匹配。必须匹配才会更新,不匹配不会给更新。可以检查一下是不是传入的参数有错,数据库中没有对应的字段(或列)。

#2


谢谢,问题已解决

#1


传入的字段个数与数据库中的列个数不匹配。必须匹配才会更新,不匹配不会给更新。可以检查一下是不是传入的参数有错,数据库中没有对应的字段(或列)。

#2


谢谢,问题已解决