gpt4 book ai didi

c++ - 有没有更清洁的方法来做到这一点? (在 Qt C++ 中准备 SQL 查询)

转载 作者:搜寻专家 更新时间:2023-10-31 00:04:44 26 4
gpt4 key购买 nike

我在我正在处理的 Qt 项目中使用 QSqlQuery::prepare() 和::addBindValue() 进行查询。有很多重复的代码,虽然我认为这是“正确”的方式,但我想确定一下。也许有人有其他想法?示例:

QSqlQuery newQuery;
newQuery.prepare("INSERT INTO table "
"(foo,bar,baz,"
"herp,derp,biggerp,"
"alpha,beta,gamma,"
"etc) VALUES "
"(?,?,?,"
"?,?,?,"
"?,?,?,"
"?)");
newQuery.addBindValue(this->ui->txtFoo->text());
newQuery.addBindValue(this->ui->txtBar->text());
newQuery.addBindValue(this->ui->txtBaz->text());
newQuery.addBindValue(this->ui->txtHerp->text());
newQuery.addBindValue(this->ui->txtDerp->text());
newQuery.addBindValue(this->ui->txtBiggerp->text());
newQuery.addBindValue(this->ui->txtAlpha->text());
newQuery.addBindValue(this->ui->txtBeta->text());
newQuery.addBindValue(this->ui->txtGamma->itemText(0));
newQuery.addBindValue(this->ui->txtEtc->text());
newQuery.exec();

您可以看到有一堆相同的“newQuery.addBindValue(this->ui->__________”一遍又一遍。这是解决问题的“最佳”方法吗?

此外,前几天晚上我在 freenode 上的#qt 中询问,但没有得到明确的答案;上面的 (::prepare with::addBindValue) 会防止 SQL 注入(inject)吗?引用并没有真正说明。

最佳答案

如果您首先使用绑定(bind)创建一个 QMapQStringList,然后遍历该数据结构并调用 addBindValue() 用于列表/ map 中的每个项目。

关于c++ - 有没有更清洁的方法来做到这一点? (在 Qt C++ 中准备 SQL 查询),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3641157/

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