Android 查询内容提供程序的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();

我有一个非常基本的内容提供者,它在sqlite数据库中存储4列。这些列是一个自动递增键、一个作为文本的url、一个long和一个图像的blob。当我尝试查询url时,我没有得到任何结果,即使我知道该行存在于数据库中。我需要对url做什么才能让选择拉入它

//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”。谢谢你抓住我的错误,“有点刺耳”。。也许吧,但您确实提供了插入和查询问题。。。我确信你会发现:)