-2

我有一个 Sqlite 数据库插入功能

ContentValues values=new ContentValues();
values.put(CardTable.KEY_USERID, card_id);
values.put("id", some id);
values.put("namr", some name);
......
getContentResolver().insert(CardManagingProvider.CONTENT_URI_DETAIL, values);

我的插入查询不起作用。是因为其中一个值values是长字符串(图像的 Base64 编码形式)吗?任何人都可以给我任何建议吗?

4

1 回答 1

0

您可以在此处查看 SQLite 的长度限制。

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

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

您可以确定您的 Base64 是否超出了这些限制,但可能性不大。

但是,我建议不要将 Base64 字符串存储在数据库中。您的数据库越大,处理 SQL 语句所需的时间就越长。仅将图像的 URI 存储在数据库中,然后使用该 URI 从磁盘/网络定位/加载图像被认为是一种很好的做法。

于 2012-05-29T15:22:14.183 回答