2

我目前正在手机上建立一个记录事件的数据库,但由于我不想把它变成一个庞大的数据库,所以 100 个事件绰绰有余。

这将使我的数据库保持高效。

不幸的是,我没有看到限制行数的方法

String sql = "DELETE FROM myTable WHERE _id <= "+limitId; 

我可以在用户启动/离开应用程序时运行此代码,但我期待有更好的方法来实现这一点

有没有更方便的方法来实现这一点?

4

2 回答 2

0

我猜你的意思是限制 100 个最新事件?如果是这样,没有比你做的更好的方法了:检查每个插入的条目并在必要时删除旧条目。

这只是您如何或在何处进行检查的口味问题,正如 flx 提到的,您可以在 ContentProvider 中进行检查,或者您可能在实际添加新行的 BroadcastReceiver 或 Service 中进行检查。你也可以在你的桌子上设置一个触发器,但主要的想法是一样的。如果您对触发器感兴趣,请点击此处的链接:

http://www.tutorialspoint.com/sqlite/sqlite_triggers.htm

于 2013-09-08T06:50:15.877 回答
0

如果您使用的是ContentProvider,则可以在 中实现 DELETE,在onInsert单行的每个插入中删除单行:

String sql = "DELETE FROM myTable WHERE _id IN (SELECT min(_id) FROM myTable)";
于 2013-09-08T06:44:58.910 回答