2012-12-06 56 views
0

我有一个非常基本的内容提供商,在sqlite数据库中存储4列。这些列是一个自动递增键,一个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(); 
    } 
} 
+1

,因为搜索的youre像'HTTP网址:// someurl'并在数据库中,您有' '的http:// someurl''(用''')......如果你猜为什么 - 好你如果不是......编程不适合你...... – Selvin

+0

哇。有点苛刻。无论如何,事实证明我只是有一个复制和粘贴错误。正如你所说,我正在添加“'网址'”并搜索“网址”。感谢您捕捉我的错误。 – user1883083

+0

“有点苛刻”..也许,但你确实提供了插入和查询问题......我确信你会发现这:) – Selvin

回答

0

我知道你已经知道答案,但...在这里

values.put(ImagesContentProvider.URL, "'" + url + "'"); 

错误,这应该是:

values.put(ImagesContentProvider.URL, url); 
//or you should add ' when you do query 

你不必要在ContentValues逃避串...

为了防止出现这样的错误,请不要通过字符串转义...使用parametrized quer IES

Cursor resultsCursor = cr.query(ImagesContentProvider.CONTENT_URI, 
     null, ImagesContentProvider.URL + "=?", new String[] { url }, null);