android中的Sqite数据库插入

android中的Sqite数据库插入,android,android-contentprovider,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); 我的插

我有一个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);

我的插入查询不起作用。是否因为
值中的一个值是长字符串(图像的Base64编码形式)?有谁能给我一些建议吗?

你可以看到SQLite的长度限制

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

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

您可以确定Base64是否超出了这些限制,无论可能性有多大


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

错误是什么?发布堆栈跟踪或日志输出。什么是
CardTable.KEY\u USERID
?它与您的“id”列不同吗?