Android 查询内容提供程序的url不会返回任何结果
我有一个非常基本的内容提供者,它在sqlite数据库中存储4列。这些列是一个自动递增键、一个作为文本的url、一个long和一个图像的blob。当我尝试查询url时,我没有得到任何结果,即使我知道该行存在于数据库中。我需要对url做什么才能让选择拉入它Android 查询内容提供程序的url不会返回任何结果,android,sqlite,Android,Sqlite,我有一个非常基本的内容提供者,它在sqlite数据库中存储4列。这些列是一个自动递增键、一个作为文本的url、一个long和一个图像的blob。当我尝试查询url时,我没有得到任何结果,即使我知道该行存在于数据库中。我需要对url做什么才能让选择拉入它 //called when storing private void addKey(String url, final Bitmap bm) { ContentValues values = new ContentValues();
//called when storing
private void addKey(String url, final Bitmap bm) {
ContentValues values = new ContentValues();
values.put(ImagesContentProvider.URL, "'" + url + "'");
values.put(ImagesContentProvider.TIME, System.currentTimeMillis());
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bm.compress(CompressFormat.PNG, 0 /* ignored for PNG */, bos);
values.put(ImagesContentProvider.BITMAP, bos.toByteArray());
cr.insert(ImagesContentProvider.CONTENT_URI, values); //cr is content resolver
}
//called for querying
private void query(String url) {
String selection = ImagesContentProvider.URL + "='" + url+ "'";
Cursor resultsCursor = cr.query(ImagesContentProvider.CONTENT_URI,
null, selection, null, null);
if (!resultsCursor.moveToFirst()) {
Log.d(TAG, "Not found in DB");
resultsCursor.close();
} else {
Log.e(TAG, "found in DB");
resultsCursor.close();
}
}
我知道你已经知道答案了,但是。。。 错误就在这里
values.put(ImagesContentProvider.URL, "'" + url + "'");
这应该是:
values.put(ImagesContentProvider.URL, url);
//or you should add ' when you do query
您在ContentValues中输入了不必要的转义字符串
为防止此类错误,请不要自行转义字符串。。。使用参数化查询
Cursor resultsCursor = cr.query(ImagesContentProvider.CONTENT_URI,
null, ImagesContentProvider.URL + "=?", new String[] { url }, null);
因为您正在搜索像
http://someurl
并且在数据库中有'http://someurl“
(带”
)。。。如果你猜猜为什么-如果不是的话对你有好处。。。编程不适合你……哇。有点刺耳。不管怎样,结果证明我只是有一个复制粘贴错误。正如你所说,我正在添加“url”并搜索“url”。谢谢你抓住我的错误,“有点刺耳”。。也许吧,但您确实提供了插入和查询问题。。。我确信你会发现:)