2013-08-23 42 views
0

我正在使用Java進行Android應用程序工作,我需要在Java代碼中查詢數據庫以檢查userinput(variable)語句是否包含也就是說這是在使用查詢LIKE和Java代碼rowQuery方法我SQLite數據庫,如何在Android中使用「LIKE」和「%」檢查變量的相似性(Java代碼)

我用這個代碼,但沒有奏效:

cursor = db.rawQuery("SELECT shompet FROM sentence WHERE " + column + " LIKE '%" 
           + newMessage + "%'", null); 

newMessage是我的變量(userInput)

我看過類似的話題,但要麼他們不是我的答案,要麼他們太複雜了。

+2

謹防[SQL注入](http://en.wikipedia.org/wiki/SQL_injection) – GriffeyDog

+0

什麼價值'newMessage'?什麼是您認爲應該匹配的數據庫值? –

+0

@cl。它是簡單的字符串,如「你好」或「你好嗎」等等,在數據庫中我們有像「hi」這樣的值匹配「hi there」和「are」匹配「你好嗎」 – MehrdadSComputer

回答

2

在表達式'hi' LIKE '%hi there%'中,無法找到任何字符來替換%通配符,以便字符串匹配。

你需要做的比較其他方式,即'hi there' LIKE '%hi%'

db.rawQuery("SELECT shompet FROM sentence" + 
      " WHERE ? LIKE '%' || " + column + " || '%'", 
      new String[] { newMessage }); 
+0

@ CL的例子。謝謝,你的解決方案對我很好。但我完全不能理解你的代碼,你能解釋一下什麼是「?」。在WHERE和什麼是「||」之後? – MehrdadSComputer

+0

@ CL.do你知道用於學習和培訓SQLite的任何有用的文檔嗎? – MehrdadSComputer

+0

'?'是一個參數,它允許您將值放入SQL命令而不必格式化它們;這可以防止[SQL注入攻擊](http://xkcd.com/327/)。在SQL中,'||'連接字符串。 –

相關問題