在下面的代码中,我创建了一个表"one“,它是QSQLITE数据库的一部分,其属性如下面的代码所示。然后我将QStrings a1,b1,c1,d1插入到用户输入的表中。现在,只有在表中不存在b1和c1时,软件才必须插入到数据库中。如果表中存在b1和c1,则必须将d1列值更新为已经存在的d1值和新的d1值之和。
[例如:考虑,
(row1) "A B C D“(row2)”水果苹果红10“(row3)”水果香蕉黄15“
作为插入到数据库中的行。现在,如果我必须插入另一行“水果苹果红8”,它必须将表第一行的D列更新为10+8 = "18“。我该怎么做呢?
@
QSqlQuery query;
query.prepare("create table one (A varchar(20), B varchar(30),
C varchar(30), D integer(10))");
query.exec();
query.prepare("insert into one (A,B,C,D)"
"values(:a,:b,:c,:d)");
query.bindValue(":a",a1);
query.bindValue(":b",b1);
query.bindValue(":c",c1);
query.bindValue(":d",d1);
@发布于 2017-08-12 20:06:11
尝试更新现有行。如果这样做不起作用,该行就不存在,您必须插入它:
query.prepare("UPDATE one SET d1 = d1 + :d WHERE ...");
query.bindValue(...);
query.exec();
if (query.numRowsAffected() == 0) {
query.prepare("INSERT ...");
query.bindValue(...);
query.exec();
}https://stackoverflow.com/questions/45649479
复制相似问题