在android中插入Sqlite数据库

时间:2012-05-29 15:14:16

标签: android android-contentprovider

我有一个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编码的图像形式)?任何人都可以给我任何建议吗?

1 个答案:

答案 0 :(得分:0)

您可以看到SQLite here的长度限制。

  

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

     

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

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

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