14

关于这个问题:

Android 上的 SQLite 如何处理长字符串?

它说默认 SQLite 存储在 10 亿个。这与实际站点相同。

但是,正如该人所说,它可能会更少。我想知道他们是否可以检查/这个值是多少?

谢谢!

4

2 回答 2

12

字符串或 BLOB 的最大长度

SQLite 中字符串或 BLOB 中的最大字节数由预处理器宏 SQLITE_MAX_LENGTH 定义。该宏的默认值为 10 亿(1 亿或 1,000,000,000)。您可以使用如下命令行选项在编译时提高或降低此值:

-DSQLITE_MAX_LENGTH=123456789 

当前的实现只支持长度为 231-1 或 2147483647 的字符串或 BLOB。一些内置函数,如 hex() 在此之前可能会失败。在对安全敏感的应用程序中,最好不要尝试增加最大字符串和 blob 长度。事实上,如果可能的话,最好将最大字符串和 blob 长度降低到几百万的范围内。

在 SQLite 的部分 INSERT 和 SELECT 处理期间,数据库中每一行的完整内容被编码为单个 BLOB。所以 SQLITE_MAX_LENGTH 参数也决定了一行的最大字节数。

来自http://www.sqlite.org/limits.html

于 2013-04-19T04:12:59.807 回答
5

无法在运行时读取 Android 中的 SQLite 限制。(SQLite在其 C API中为此提供了一个函数,但 Android 并未公开此函数。)

无论如何,我不知道有哪个 Android 供应商降低了 SQLite 的任何限制。(通常,当他们在自己的应用程序中需要它或尝试优化时,他们会增加一些限制或启用某些选项,但他们从不费心去改变一些东西。)

于 2013-04-19T18:55:47.620 回答