SQLite如何从sqlite_sequence中删除条目?

时间:2014-02-02 14:19:29

标签: android sqlite sequence greendao

我使用GreenDao并为类别创建条目,这完全有效。我的问题是,当我重复这个动作时, de.greenrobot.dao.DaoException失败:实体与DAO上下文分离。 我用SQLite调试器查看了数据库,每次看到 我插入了这些条目,sqlite_sequence中出现了一个条目。我用我的应用程序“SQLite Debugger”手动删除了它。 在此之后它起作用。

现在的问题。我该如何自动完成?

CodeSnippet

if (category_CategoriesCompaniesQuery == null || category_CategoriesCompaniesQuery.equals(null)) {
        QueryBuilder<CategoryCompany> tempQueryBuilder = queryBuilder();
        tempQueryBuilder.where(Properties.CategoryID.eq(categoryID));
        category_CategoriesCompaniesQuery = tempQueryBuilder.build().forCurrentThread();
    } else {
        category_CategoriesCompaniesQuery.forCurrentThread().setParameter(0, categoryID);
    }
    return category_CategoriesCompaniesQuery.forCurrentThread().list();
}

堆栈跟踪

  

02-04 12:05:38.883:E / AndroidRuntime(23568):java.lang.RuntimeException:执行doInBackground()时发生错误   02-04 12:05:38.883:E / AndroidRuntime(23568):在android.os.AsyncTask $ 3.done(AsyncTask.java:300)   02-04 12:05:38.883:E / AndroidRuntime(23568):at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)   02-04 12:05:38.883:E / AndroidRuntime(23568):at java.util.concurrent.FutureTask.setException(FutureTask.java:222)   02-04 12:05:38.883:E / AndroidRuntime(23568):at java.util.concurrent.FutureTask.run(FutureTask.java:242)   02-04 12:05:38.883:E / AndroidRuntime(23568):在android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:231)   02-04 12:05:38.883:E / AndroidRuntime(23568):at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)   02-04 12:05:38.883:E / AndroidRuntime(23568):at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:587)   02-04 12:05:38.883:E / AndroidRuntime(23568):at java.lang.Thread.run(Thread.java:841)   02-04 12:05:38.883:E / AndroidRuntime(23568):引起:de.greenrobot.dao.DaoException:实体与DAO上下文分离   02-04 12:05:38.883:E / AndroidRuntime(23568):at com.adamasvision.mytermin.model.Category.getCategoriesCompanies(Category.java:152)   02-04 12:05:38.883:E / AndroidRuntime(23568):at com.adamasvision.mytermin.UserState $ 1.doInBackground(UserState.java:415)   02-04 12:05:38.883:E / AndroidRuntime(23568):at com.adamasvision.mytermin.UserState $ 1.doInBackground(UserState.java:1)   02-04 12:05:38.883:E / AndroidRuntime(23568):在android.os.AsyncTask $ 2.call(AsyncTask.java:288)   02-04 12:05:38.883:E / AndroidRuntime(23568):at java.util.concurrent.FutureTask.run(FutureTask.java:237)

1 个答案:

答案 0 :(得分:0)

sqlite_sequence跟踪自动增量值。你不应该搞乱它,因为它可能会破坏你的数据完整性。