Android SQLite:从数据库创建和更新行

时间:2018-11-14 04:39:38

标签: android sqlite

我一直在使用https://github.com/jgilfelt/android-sqlite-asset-helper库作为应用程序中预填充的数据库。当我想更新多行时,文档说我应该为此编写sql脚本。还有其他方法吗,因为我要更新大约200多个行。我也不能用新数据库替换数据库,因为其中其他表中已经有用户数据。

2 个答案:

答案 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);
  • 这将如上所述构建并执行SQL。
  • 这似乎比较冗长,但是使用此方法有很多优点,例如
    • 它返回已更新的行数,
    • 它可防止SQL注入,
    • 正确封装/转义数据
    • SQL在语法上将是正确的。

答案 1 :(得分:0)

不。这是一种方法,但不是唯一的方法。另一个好方法是将新数据发送到新数据库中。然后,在下载之后,使用upsert机制将数据从新数据库复制到旧数据库。这样可以将数据更新为新信息,而不会丢失用户插入的行。当然,如果您需要担心用户所做的更改,则需要找到某种方法来检测到该错误并解决冲突。