【问题标题】:Max length of Android Sqlite String?Android Sqlite 字符串的最大长度?
【发布时间】:2013-04-12 09:33:04
【问题描述】:

关于这个问题:

How SQLite on Android handles long strings?

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

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

谢谢!

【问题讨论】:

    标签: android sqlite max


    【解决方案1】:

    字符串或 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 参数还决定了最大数量 连续字节。

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

    【讨论】:

    • 我理解这一点,但是,正如 ti 所说,您可以在编译时通过命令行选项更改它。所以问题是更多,他们是否改变了它,如果是,它的新价值是什么?或者,我怎样才能知道他们是否这样做了?
    【解决方案2】:

    无法在运行时读取 Android 中的 SQLite 限制。 (SQLite 在其 C API 中有 a function for this,但 Android 没有公开它。)

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

    【讨论】:

    • 好的。谢谢。这比上面更能回答我的问题,因为我实际上无法测试它可以轻松完成多长时间。再次感谢 =)。
    • 我想知道大型 BLOB 与文件存储相比的性能方面。?
    • @eRaisedToX 这与这个问题无关。并且已经是documented
    猜你喜欢
    • 2013-07-05
    • 2016-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-03
    • 2013-08-15
    相关资源
    最近更新 更多