2014-07-12 51 views
1

我正在使用關鍵字在數據庫行上執行搜索。 我必須使用JDBC準備語句執行此查詢。LIKE中的單引號導入到JDBC準備好的語句中

SELECT id, name, ci FROM clients WHERE LOWER(name) LIKE '%keyword%' 

我的嘗試是:

ps = getConnection().prepareStatement("SELECT id, 
               name, 
               ci 
             FROM clientes 
             WHERE LOWER(name) LIKE '%?%'"); 

如果我寫這篇文章時,系統發現有行?符號在開始或結束。 顯而易見,下面的語句失敗說,查詢沒有參數傳遞給。

ps.setString(1, keyword); 

同樣的方式與:

SELECT id, nombre, ci FROM clientes WHERE LOWER(nombre) LIKE %?% 

任何幫助是非常讚賞

回答

3

嘗試SQL文本用這樣的形式:

... LIKE CONCAT('%', ? , '%') 
+0

我會以此爲正確答案,因爲它是我採取的辦法。它比周圍的關鍵字更快,工作更好,更簡單。 – halbano

0

你準備的說法應該是

SELECT id, name, ci FROM clients WHERE LOWER(name) LIKE ? 

,那麼你可以將參數設置爲%keyword%