21

我在一次采访中被问到如何为我们的 android 应用程序设置 sqlite db 的最大大小。当达到最大尺寸时我们如何处理?

编辑:Marina Lynn 在下面的回答似乎可以接受这个问题。但是当数据库大小接近我们指定的限制时,是否会触发某种侦听器?(或类似的东西)

4

3 回答 3

17

首先,设置.setMaximumSize()上一个答案中提到的最大数据库大小使用。

SQLiteFullException其次,如果数据库文件增长大于最大页数 * 页面大小,Android 会抛出异常。SQLiteFullException是一个RuntimeException。如果您想处理它并发送相关响应,您将执行以下操作:

try {
     getContentResolver().update(myEntity.CONTENT_URI, values, where, null);
} catch (SQLiteFullException e) {
    Log.w(TAG, "Exception when updating ...", e);
}
于 2012-09-01T18:27:03.223 回答
9

尽管除了可用存储之外,数据库的大小没有限制,但您可以将数据库的最大大小设置为SQLiteDatabase.setMaximumSize(). 如果达到限制,则必须缩小数据库。或者,您可以将数据库从内部存储器移动到外部存储,可能有更多可用空间并增加数据库最大大小。但是繁重的数据库会导致糟糕的用户体验,因此第二个选择是理论上的。请记住,我们是在移动环境中,而不是在专用的数据库服务器中。

于 2012-07-24T06:50:16.287 回答
0

请考虑到它SQLiteFullException不仅会在您的数据库达到其自身限制时抛出,而且在文件存储中没有可用空间的情况下也会抛出。如果要处理 SQLiteFull 异常,还需要检查设备上的可用空间。如果设备上的空间不足,您需要告诉用户从未使用的数据中清除设备。

于 2019-08-19T09:21:25.997 回答