【问题标题】:Delete Sugar ORM database table records删除 Sugar ORM 数据库表记录
【发布时间】:2017-03-14 04:09:55
【问题描述】:

我有一个带有一些名称和 url 的列表视图。在我的应用程序启动后,我检查本地数据库中是否有任何记录。所以如果有,首先清除我的旧记录,然后用列表视图数据填充表列,如果不只是插入数据......这就是我的做法:

List<LocalProduct> allAuthors = LocalProduct.listAll(LocalProduct.class);
if (allAuthors == null) {
    for (int allList=0;allList<adapter.getCount();allList++){
        Product my = adapter.getItem(allList);
        String offline_name = my.name.toString().trim();
        String offline_url = my.image_url.toString().trim();
        LocalProduct book = new LocalProduct(offline_name, offline_url);
        book.save();
        }
    }else {

        /*
        SugarContext.terminate();
        SchemaGenerator schemaGenerator = new SchemaGenerator(getContext());
        schemaGenerator.deleteTables(new SugarDb(getContext()).getDB());
        SugarContext.init(getContext());
        schemaGenerator.createDatabase(new SugarDb(getContext()).getDB());
        */

    for (int allList=0;allList<adapter.getCount();allList++){
        Product my = adapter.getItem(allList);
        String offline_name = my.name.toString().trim();
        String offline_url = my.image_url.toString().trim();
        LocalProduct book = new LocalProduct(offline_name, offline_url);
        book.save();
        }
    }

我的代码的注释区域将删除并重新创建表,这将导致每次延迟...我怎样才能删除我的记录!?

【问题讨论】:

  • 你为什么不用一个单独的线程在后台做呢?
  • 这会淡化延迟吗?怎么样?
  • 否,但它不会阻止用户在 UI 中工作..

标签: android database listview sugarorm


【解决方案1】:

用于重置记录:

LocalProduct.deleteAll(LocalProduct.class);

用于重置自动增量计数器:

LocalProduct.executeQuery("DELETE FROM SQLITE_SEQUENCE WHERE NAME = '" + tableName + "'");

【讨论】:

    【解决方案2】:

    为什么要完全删除表并重新创建它。由于 Suger orm 支持批量删除,然后将其与后台线程一起使用。

    查看here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多