Android数据库:如何将一列更新为另一列值?例如,
Item
------------------------------------
id, name, suggestedPrice, salesPrice
将salesPrice更新为所有行的建议值,SQL:
update Item set salesPrice=suggestedPrice
在android中:
void execSQL(sql, bindingArg)
android文档说:执行一个不是SELECT / INSERT / UPDATE / DELETE的SQL语句 . 问题是execSql(..)不返回受影响的行数 . 还有其他方法吗?
2 回答
Android文档是错误的 . 理论上,您应该使用update() function,但是您不能使用SQL表达式来计算新值 .
只需致电
execSQL()
. 要获取受影响的行数,请在之后调用changes():这是一个冗长的相对通用的解决方案 .
基本上它使用
SQLiteDatabase
update
方法从相应的行中获取要更新的值 .这样做是安全的,即SQL
update Item set salesPrice=suggestedPrice
会更新所有行 .它只会根据id列更新一行 .
该方法需要6个参数: -
1)SQLiteDatabase .
2)将应用更新的表的名称 .
3)表中要从中执行更新的数据的列的名称 .
4)将更新的列的名称 .
5)包含ID的列的名称(注意,因为它是 rowid , rowid 或 oid 将不起作用) .
6)行的ID为long .
注释列以表名和句号分隔符为前缀,即table.column,也不起作用 .
进行相对广泛的检查: -
检查所有三列以查看它们是否存在(所有列的光标最多提取1行) .
检查要更新的行的存在,作为获取值的一部分 .
将记录解释性消息 .
示例使用1(完成OK): -
记录中的结果: -
示例使用2(非现有列 - 未执行更新): -
记录中的结果: -
示例使用3 - 无效(不存在)ID: -
结果在日志中: -