我一直在使用https://github.com/jgilfelt/android-sqlite-asset-helper库作为应用程序中预填充的数据库。当我想更新多行时,文档说我应该为此编写sql脚本。还有其他方法吗,因为我要更新大约200多个行。我也不能用新数据库替换数据库,因为其中其他表中已经有用户数据。
答案 0 :(得分:0)
总之,不,SQL是您与数据库进行交互的方式。
但是,单个更新可以更新每一行。
此外,还有一些便捷方法,例如构建SQL的更新方法。
例如,假设您有一个名为 mytable 的表,该表具有一个名为 name 的列,并且您想将所有出现的 joe 更改为< strong> Joseph ,那么SQL可能是:-
String sql = "UPDATE mytable SET name = 'Joseph' WHERE name = 'joe'";
现在假设您有一个名为 db 的SQLiteDatabase实例,则可以使用:-
db.execSQL(sql);
或者您可以使用:-
String wherecluase = "name =?";
String[] whereargs = new String[]{"joe"};
ContentValues cv = new ContentValues();
cv.put("name","Joseph");
int rows_updated = db.update("mytable",cv,whereclause,whereargs);
答案 1 :(得分:0)
不。这是一种方法,但不是唯一的方法。另一个好方法是将新数据发送到新数据库中。然后,在下载之后,使用upsert机制将数据从新数据库复制到旧数据库。这样可以将数据更新为新信息,而不会丢失用户插入的行。当然,如果您需要担心用户所做的更改,则需要找到某种方法来检测到该错误并解决冲突。