Eri*_*oob 8 java mysql jdbc prepared-statement
这是我当前的SQL语句:
SEARCH_ALBUMS_SQL = "SELECT * FROM albums WHERE title LIKE ? OR artist LIKE ?;";
Run Code Online (Sandbox Code Playgroud)
它会返回与专辑或艺术家名称的完全匹配,但不会返回任何其他内容.我不能在声明中使用'%',否则我会收到错误.
如何将通配符添加到预准备语句中?
(我正在使用Java5和MySQL)
谢谢!
Pau*_*lin 18
您将%放在绑定变量中.所以你也是
stmt.setString(1, "%" + likeSanitize(title) + "%");
stmt.setString(2, "%" + likeSanitize(artist) + "%");
Run Code Online (Sandbox Code Playgroud)
你应该添加ESCAPE'!' 允许您在输入中转义对LIKE至关重要的特殊字符.
在使用标题或艺术家之前,你应该通过使用如下方法转义特殊字符(!,%,_和[)来消毒它们(如上所示):
public static String likeSanitize(String input) {
return input
.replace("!", "!!")
.replace("%", "!%")
.replace("_", "!_")
.replace("[", "![");
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5487 次 |
最近记录: |