首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果存在QSQLITE数据库,则根据qt中的行值插入或更新

如果存在QSQLITE数据库,则根据qt中的行值插入或更新
EN

Stack Overflow用户
提问于 2017-08-12 19:02:39
回答 1查看 893关注 0票数 1

在下面的代码中,我创建了一个表"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“。我该怎么做呢?

代码语言:javascript
运行
复制
@   
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);
@
EN

回答 1

Stack Overflow用户

发布于 2017-08-12 20:06:11

尝试更新现有行。如果这样做不起作用,该行就不存在,您必须插入它:

代码语言:javascript
运行
复制
query.prepare("UPDATE one SET d1 = d1 + :d WHERE ...");
query.bindValue(...);
query.exec();
if (query.numRowsAffected() == 0) {
    query.prepare("INSERT ...");
    query.bindValue(...);
    query.exec();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45649479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档