如果存在 QSQLITE 数据库,则根据 qt 中的行值插入或更新
Insert or update if exists a QSQLITE database according to the row values in qt
在下面的代码中,我创建了一个表"one",它是QSQLITE数据库的一部分,其属性如下面的代码所示。然后我将QStrings a1,b1,c1,d1插入用户输入的表中。现在,仅当表中尚不存在 b1 和 c1 时,软件才必须插入到数据库中。如果表中存在 b1 和 c1,则必须将 d1 列值更新为已存在的 d1 值和新的 d1 值的总和。
[例如:考虑,
(第 1 行( "A B C D" (row2( "水果苹果红 10" (第 3 行( "水果香蕉黄 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);
@
尝试更新现有行。如果这不起作用,则该行不存在,您必须插入它:
query.prepare("UPDATE one SET d1 = d1 + :d WHERE ...");
query.bindValue(...);
query.exec();
if (query.numRowsAffected() == 0) {
query.prepare("INSERT ...");
query.bindValue(...);
query.exec();
}
相关文章:
- 从C++本机插件更新Vector3数组
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QGraphicsPolygonItem在拖动时未更新QPolygonF坐标
- 尝试使用 EvtSetChannelConfigProperty() 函数更新最大事件日志文件大小时插入的错误值
- 如果存在 QSQLITE 数据库,则根据 qt 中的行值插入或更新
- 插入新元素时结束迭代器会获得更新
- 优先级队列实现为单一链接,无法更新插入的指针转换
- 二进制树c++插入和更新
- 蒙戈更新插入性能(C++)
- 将项目"更新插入"到映射<键、shared_ptr的正确方法<foo>>
- 选择在 Sqlite 数据库中有效,但插入和更新语句不起作用
- C++ 链表 - 插入节点函数不会更新函数范围之外的值
- 插入或更新地图
- 在提升::unordered_map中有效地插入或更新
- 如何检查对象属性更新是否存在 std::map 键,否则插入一个新键?
- 如何使用 ODBC API 将数据更新插入到 NVARCHAR 列中
- MongoDB 更新插入在锁定时不会更新
- 不使用 if 插入/更新 std::unordered_map 元素的最快方法是什么
- 如何避免在重复更新的情况下插入到select中的死锁情况