【发布时间】:2013-04-12 09:33:04
【问题描述】:
关于这个问题:
How SQLite on Android handles long strings?
它说默认 SQLite 存储在 10 亿个。这与实际站点相同。
但是,正如该人所说,它可能会更少。我想知道他们是否可以检查/这个值是多少?
谢谢!
【问题讨论】:
关于这个问题:
How SQLite on Android handles long strings?
它说默认 SQLite 存储在 10 亿个。这与实际站点相同。
但是,正如该人所说,它可能会更少。我想知道他们是否可以检查/这个值是多少?
谢谢!
【问题讨论】:
字符串或 BLOB 的最大长度
SQLite 中字符串或 BLOB 中的最大字节数由预处理器宏 SQLITE_MAX_LENGTH 定义。该宏的默认值为 10 亿(1 亿或 1,000,000,000)。你 可以在编译时使用命令行提高或降低此值 像这样的选项:
-DSQLITE_MAX_LENGTH=123456789当前的实现只支持长度为 231-1 或 2147483647 的字符串或 BLOB。还有一些 诸如 hex() 之类的内置函数可能在此之前就失败了。在 对安全敏感的应用程序最好不要尝试增加 最大字符串和 blob 长度。事实上,你最好降低 最大字符串和 blob 长度在 a 的范围内 如果可能的话,几百万。
在 SQLite 的部分 INSERT 和 SELECT 处理过程中,数据库中每一行的完整内容被编码为单个 BLOB。所以 SQLITE_MAX_LENGTH 参数还决定了最大数量 连续字节。
【讨论】:
无法在运行时读取 Android 中的 SQLite 限制。 (SQLite 在其 C API 中有 a function for this,但 Android 没有公开它。)
无论如何,我不知道有哪个 Android 供应商降低了 SQLite 的任何限制。 (通常,当他们在自己的应用程序中需要或尝试优化时,他们会增加一些限制或启用某些选项,但他们从不费心去改变一些东西。)
【讨论】: