我想在inputTextArea中使用自动完成功能。我正在使用数据库中的值进行此操作。我有数据库中存储的单词,数字,符号(如#)。
问题是当我尝试在textArea中键入内容时,会出现整个列表。相反,我只希望出现那些与textArea中写的输入相匹配的选项,这是一种自动完成功能,但它会从数据库中获取值。 下面给出的是我到目前为止编写的Java代码。
public class DbConnect {
public List<String> completeArea(String query1) {
ResultSet rs;
Statement st;
Connection con;
PreparedStatement pst;
List<String> result = new ArrayList<String>();
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost/company", "root", "");
try {
query1 = "select name from labels";
pst = con.prepareStatement(query1);
rs = pst.executeQuery();
while (rs.next()) {
result.add(rs.getString("name"));
}
} catch (Exception ex) {
System.out.println(ex);
}
} catch (Exception ex) {
System.out.println("error occured" + ex);
}
System.out.println("size is " + result.size());
return result;
}
我不想在数据库中指定用于搜索的任何特定字母,当用户键入时,它将自动选择。任何帮助都可以。非常感谢。
答案 0 :(得分:1)
在您的示例中,query1
方法的completeArea
参数是用户输入,但是您用查询覆盖了它。尝试
public List<String> completeArea(String input) {
...
String query = "select name from labels where name like ?";
pst = con.prepareStatement(query);
pst.setString(1, input + "%");
...
}
根据@Slaw注释进行编辑。感谢您的更正。 :)
在此用例中,我将使用 <p:autoComplete />
而不是inputTextArea。
您可以在this网站上找到一个不错的教程。
答案 1 :(得分:0)
您的查询是
select name from labels
将给出所有标签的名称...
我不想在数据库中指定要搜索的任何特定字母,当用户键入时,它会自动选择。任何帮助都可以。
如果要进行匹配,必须指定一个条件