【发布时间】:2021-08-05 21:16:02
【问题描述】:
我正在构建一个应用程序,并尝试使用 PreparedStatements 来执行 SQL 查询。基本上,有一个搜索选项,我正在尝试在搜索框中使用 SQL LIKE 方法。该名称取自搜索框并插入到 PreparedStatement 中。
try {
PreparedStatement ps2 = con.prepareStatement("SELECT * FROM books WHERE book_name LIKE ? AND status=?");
ps2.setString(1, name2 + "%");
ps2.setString(2, stat);
ResultSet rs = ps2.executeQuery();
dt.setRowCount(0);
while (rs.next()) {
Object ob[] = {
rs.getString("book_name"),
rs.getString("book_author")
};
dt.addRow(ob);
}
} catch (Exception af) {
jLabel29.setText("No result Found !");
}
break;
其中 name2 是用户搜索的内容。但是,当我这样做时,程序仅在“book_name”列中的第一个单词与搜索项目匹配时才给出输出。比如一句“My name is Jack”,如果我输入“Jack”或“name”,则没有输出,但如果输入“My”,则会检测到整行。
【问题讨论】:
-
LIKE 'xyz%'表示“以xyz开头”。%充当通配符。所以LIKE '%xyz%'将匹配任何包含xyz