如何在不同的列中插入随机数量的值? 查询.C++.SQlite 数据库

How can I insert a random number of values in different columns? querys. C++. SQlite database

本文关键字:查询 数据库 SQlite C++ 随机数 插入      更新时间:2023-10-16

在我的数据库中,我有一个名为"history"的表,有 3 列(距离 1、距离 2、距离 3(

我将简化代码中的内容:

我有一个向量"Ldist",每次都有不同的距离量。有时 1 个距离,或 2 个或 3 个距离。 通常我知道它会有多远的距离,我的工作方式是这样的:

(例如:如果我知道向量将有 2 个距离(

QSqlQuery qry;
qry.prepare("INSERT INTO history (distance1, distance2) "
"VALUES (:placeholder0, :placeholder1)");
qry.bindValue(":placeholder0", Ldist.at(0));
qry.bindValue(":placeholder1", Ldist.at(1));
qry.exec();

当我不知道这个向量会有多少距离时,我的问题就来了。如何使"列影响"和"所需的占位符"可用于处理向量"Ldist"中的随机值数量?

我试图做一个循环,但我不知道如何更改我的代码以适应我需要的东西。

谢谢建议。

你说得对,需要一个循环。像这样的东西(未经测试(

if (!Ldist.empty())
{
QString columns, values;
for (size_t i = 0; i < std::min(3, Ldist.size()); ++i)
{
columns += QString("distance%1,").arg(i + 1);
values += QString(":placeholder%1,").arg(i);
}
// trim trailing comma
columns.remove(columns.length() - 1, 1);
values.remove(values.length() - 1, 1);
QString queryStr = QString("INSERT INTO history (%1) VALUES (%2)").arg(columns, values);
QSqlQuery qry(queryStr);
for (size_t i = 0; i < std::min(3, Ldist.size()); ++i)
{
QString placeHolder = QString(":placeholder%1,").arg(i);
qry.bindValue(placeHolder, Ldist.at(i));
}
qry.exec();
}

谢谢 acraig5075!! <3

我了解到您也可以对列使用占位符。我不知道。如果我们知道^^,那就容易多了

这就是我让我的代码:

QString column; QSqlQuery qry;
for (c=0; c < Ldist.size(); c++)
{  
column = QString("dist%1").arg(c+1);    
qry.prepare("INSERT INTO history (:placeholder0) VALUES (:placeholder1)");
qry.bindValue(":placeholder0",column);
qry.bindValue(":placeholder1",Ldist.at(c));
qry.exec();
}