2016-12-10 56 views
0

我正在使用在線SQL服務,您可以在其中編寫SQL查詢並將其鏈接到URL。在android中,您可以使用請求中的url以JSON格式返回結果在SQL服務器上使用參數和通配符

爲了將參數傳遞給服務,您必須使用冒號。 像這樣的例子:

SELECT Password FROM Users 
where Username = :name 

你會使用這個查詢與

http://api.a16_sd502.studev.groept.be/getUserLogin/name 

在那裏你可以替換任何你想要的最後一個「名」。

現在我有另一個查詢,我想在使用通配符的數據庫中進行搜索。

SELECT name, releaseDate, rating 
FROM Movies 
WHERE name LIKE '%harry%' 

這將返回:

[ 
    { 
     "name": "Harry Potter and the Sorcerer's Stone", 
     "releaseDate": "2001-11-22", 
     "rating": "7.5" 
    }, 
    { 
     "name": "Harry Potter and the Chamber of Secrets", 
     "releaseDate": "2002-11-02", 
     "rating": "7.4" 
    }, 
    { 
     "name": "Harry Potter and the Prisoner of Azkaban ", 
     "releaseDate": "2004-06-02", 
     "rating": "7.8" 
    } 
] 

這不使用參數,所以我想替換 '哈利' 與 ':查詢'。這樣我可以傳遞參數槽的URL,就像這樣的第一個例子:

http://api.a16_sd502.studev.groept.be/searchQuery/query 

然而,這不工作的,因爲它返回一個空JSON數組。我在做什麼錯事?我認爲它的語法相關,但我無法弄清楚。

任何解決方案?

+0

,你能否告訴我們您使用的'LIKE'查詢的實際Java代碼? –

+0

對不起,我不確定你的意思。查詢的設置在這個webservice上處理,在Java中我只需要url就可以從查詢中獲得結果。 –

回答

0

試試這個:

SELECT name, releaseDate, rating 
FROM Movies 
WHERE name LIKE CONCAT('%',:query,'%') 
+0

第一個建議還會返回一個空的JSON數組。但第二個工作得很好,非常感謝! –

+1

作爲警告,此查詢很容易出現SQL注入,並且應儘可能使用準備好的語句。 –