這會失敗:db.prepareStatement("SELECT * FROM " + table + " WHERE " + column + " LIKE '?%'");
是否有可能使用事先準備好的聲明佔位符樣的?
因爲?
未被識別爲值的佔位符。我應該如何解決這個問題?
這會失敗:db.prepareStatement("SELECT * FROM " + table + " WHERE " + column + " LIKE '?%'");
是否有可能使用事先準備好的聲明佔位符樣的?
因爲?
未被識別爲值的佔位符。我應該如何解決這個問題?
把通配符的變量,而不是在聲明中,如:
stmt = db.prepareStatement("SELECT * FROM " + table + " WHERE " + column + " LIKE ?");
stmt.setString(1, "myterm%");
嘗試,包括與LIKE參數的一部分百分號:
db.prepareStatement("SELECT * FROM " + table + " WHERE " + column + " LIKE ?");
我不喜歡查詢很多。我不認爲通過這種方式連接表和列可以節省很多。
傳遞你的價值到CONCAT()
功能:
db.prepareStatement("SELECT * FROM " + table
+ " WHERE " + column
+ " LIKE CONCAT(?, '%')");
做這種方式進行調用的代碼並不需要知道的參數都與LIKE使用,所以你的優點可以使用與其他非LIKE查詢相同的參數值。
如果它周圍的代碼,知道它會被用於LIKE,這將是一個設計決定它貧窮綁定變量只有使用像那些語句只會工作 – Bohemian