gpt4 book ai didi

c++ - Qtsql 中的参数计数不匹配

转载 作者:搜寻专家 更新时间:2023-10-31 02:13:52 27 4
gpt4 key购买 nike

我试图将数据插入 QtSql 数据库,但我一直收到错误:

"Parameter count mismatch"

我做错了什么?

#include <QtSql>

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

qDebug() << QSqlDatabase::drivers();

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setHostName("LOCALHOST");
db.setDatabaseName("people");
db.setUserName("root");
db.setPassword("");

if(db.open()) {
qDebug() << "Opened!";

QSqlQuery query;

query.prepare("INSERT INTO person (id, forename, surname) "
"VALUES (:id, :forename, :surname)");
query.bindValue(":id", 1001);
query.bindValue(":forename", "Bart");
query.bindValue(":surname", "Simpson");
query.exec();

if( !query.exec() )
qDebug() << query.lastError().text();
else
qDebug( "Inserted!" );

db.close();

} else {
qDebug() << "Not opened";
}
}

最佳答案

数据库中没有名为person 的表。您正在尝试将值插入到不存在的表中。


我认为错误信息是错误的。但无论如何,我在您的代码中添加了一个 CREATE 语句,以便在执行 INSERT 语句之前创建表:

#include <QtSql>

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(":memory:");

if(!db.open()){
qDebug() << "Not opened";
return 1;
}
qDebug() << "Opened!";

QSqlQuery query;

//CREATE the table before executing the INSERT statement
query.exec("CREATE TABLE person (id INTEGER, forename TEXT, surname TEXT);");

query.prepare("INSERT INTO person (id, forename, surname) "
"VALUES (:id, :forename, :surname)");
query.bindValue(":id", 1001);
query.bindValue(":forename", "Bart");
query.bindValue(":surname", "Simpson");

if( !query.exec() )
qDebug() << query.lastError().text();
else
qDebug( "Inserted!" );

return 0;
}

这会打印 Inserted!。但是如果我注释掉 CREATE 语句行,我会在你的问题中得到同样的错误:

" Parameter count mismatch"

关于c++ - Qtsql 中的参数计数不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40636862/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com