You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用SQLiteDatabase的update()方法将表中一列设为另一列的值?

解决SQLiteDatabase update()方法实现列赋值的问题

我懂你现在的困扰——想用SQLiteDatabase的update()方法把columnA的值设为columnB的值,但试了半天没搞成对吧?

首先得明确一个核心点:你绝对不能把columnA = columnB这个赋值逻辑放在ContentValues里。为啥?因为ContentValues本质是用来存静态常量值的(比如固定字符串、数字、布尔值这类),它会把你传入的值当成字面量处理。要是你硬把columnB塞进去当值,最终执行的SQL会变成UPDATE coolTable SET columnA = 'columnB';——也就是把columnA设成了字符串"columnB",而不是columnB列里的实际数据,这完全不是你想要的结果。

那正确的做法是什么呢?其实超简单,直接用execSQL()方法执行你原本写好的SQL语句就行:

// 获取你的数据库实例
SQLiteDatabase db = getWritableDatabase();
// 执行完整的UPDATE语句
db.execSQL("UPDATE coolTable SET columnA = columnB;");

如果需要添加WHERE条件(比如只更新特定行),还可以用带占位符的版本,避免SQL注入问题:

// 示例:只更新id为123的行
db.execSQL("UPDATE coolTable SET columnA = columnB WHERE id = ?;", new Object[]{123});

当然,如果你纠结一定要用update()相关方法,Android从API 11开始有个updateWithOnConflict(),但它依然依赖ContentValues传值,还是没法直接实现列之间的赋值。相比之下,直接执行原生SQL语句是最直接高效的方式。

内容的提问来源于stack exchange,提问作者user2264210

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:37:22