gpt4 book ai didi

java - Android SQLite - SQLiteDatabase.replace() 实际上做了什么?

转载 作者:IT老高 更新时间:2023-10-28 21:01:24 28 4
gpt4 key购买 nike

我需要对我的数据库执行 INSERT 或 UPDATE IF EXIST 类型的过程。我读到 .replace() 是要走的路。它插入新记录就好了,但如果记录已经存在,它似乎不会更新它。

我有这样的事情:

ContentValues values = new ContentValues();
values.put(ID, 1);
values.put(NAME, "bob");
values.put(VISIBLE, true);
db.replace("peopleTable", null, values);

如果我在此记录不在数据库中时运行此代码,它似乎可以很好地创建记录,就像我执行了 insert() 一样。但是,如果我将 NAME 更改为“john”或类似的名称,然后再次运行 replace(),它似乎不会更新记录。

根据文档,语法如下:

public long replace (String table, String nullColumnHack, ContentValues initialValues)

为什么叫initialValues?这是否意味着这些值仅在记录不存在并且将被插入时使用?如果是这样,您如何使用该方法更新记录?您在哪里指定新值?

如果我完全误解了 replace() 的作用,谁能解释它的目的是什么?

最佳答案

据我了解 replace() 的工作方式与 SQLite REPLACE 非常相似关键字 - 如果插入发生唯一约束冲突,则将更新一行。因此,您示例中的 ID 列需要在数据库架构中具有 PRIMARY KEY 约束才能更新行。

关于java - Android SQLite - SQLiteDatabase.replace() 实际上做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7984280/

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