数据库
首页 > 数据库> > c-Qt QSqlQuery bindValue与?但不使用:placeholders

c-Qt QSqlQuery bindValue与?但不使用:placeholders

作者:互联网

我正在使用SQLite,正在插入表中. Folowwing

QSqlQuery testQuery(QString("INSERT INTO test(testcol) VALUES(?)"));
testQuery.bindValue(0, someQStringObg);
testQuery.exec();

可行,但是

QSqlQuery testQuery(QString("INSERT INTO test(testcol) VALUES(:val)"));
testQuery.bindValue(":val", someQStringObg);
testQuery.exec();

别. testQuery.lastError().text()返回无查询无法获取行

不知道为什么事情会这样,但真的想找出答案.

解决方法:

请使用prepare作为official example

QSqlQuery testQuery;
testQuery.prepare("INSERT INTO test(testcol) VALUES(:val)");
testQuery.bindValue(":val", someQStringObj);
testQuery.exec();

错误的原因是查询是在绑定到相应的占位符之前执行的.您可以看到constructor documentation的相关部分:

If query is not an empty string, it will be executed.

标签:c,sqlite,qt,database,qsqlquery
来源: https://codeday.me/bug/20191010/1887573.html