2013-03-22 98 views
0

我有一個關於android SQLite的問題:我有一組表中的記錄。我使用{「,[,],*,&,^,%,$,#}等特殊字符查詢記錄」。它在遊標中返回正確的結果。當用特殊字符查詢返回所有結果SQLite(like)查詢

當我使用特殊字符{'}(單引號)時,它會顯示在我的數據庫中沒有該字符的任何結果的所有結果。我在SQLita工具中執行了相同的查詢,它工作得很完美,但是在我的程序中它返回了所有結果。爲什麼發生這種情況?如何解決這個問題。請幫我解決這個問題。

的代碼是在這裏:

if(search_tag!=null && search_tag.length() > 0) 
     { 
      query_filtered.append("("+DatabaseHelper.TABLE_DOCS.COL_TITLE+" like "+"'%"+search_tag+"%')"); 
     } 

查詢是在這裏:

select 
    id as _id, category_array, title, 
    building_name, content_type_array, url, type_of_level 
from 
    documents_list 
where 
    (title like '%'%') 

回答

0

此查詢對我工作的罰款

String select = "Select time from english_details where title = '" 
       + title + "'"; 

所以,你可以嘗試這樣的

String select = "Select time from english_details where title = '%" 
       + title + "%'"; 
+0

不是爲我工作。從documents_list中選擇ID爲_id,category_array,title,building_name,content_type_array,url,type_of_level其中(title ='%'''%'「)不返回任何結果。 ,來自documents_list的type_of_level其中(title ='%「建築物」%'「)即使它具有結果也不返回結果。 – Ganesh 2013-03-22 13:36:38

+0

最後它在用{''}替換{'}後工作 – Ganesh 2013-03-22 14:03:43

3

在SQL字符串,報價必須由他們加倍進行轉義:

... WHERE title LIKE '%''%' 

要避免這樣的格式問題,您應該使用參數代替:

String title = "'"; 
db.query(..., "title LIKE ?", new String[] { "%" + title + "%" }, ...); 
+0

不適用於我。 – Ganesh 2013-03-22 13:38:16

+0

最後它的工作原理是用{''}替換{'} – Ganesh 2013-03-22 14:04:42

+0

首先,CL爲您提供了使用雙擊的必要提示。因此,您應該將此標記爲正確的答案。我也認爲你沒有正確應用他的答案,因爲他所描述的是做這種事情的正確方法。 – 2013-03-23 20:29:16