我有一个数据库,其中包含以下表值:
数据库:staff_details
staffname
Arun
Suresh
Ankita
Tina
我希望使用数据库中的值自动完成文本框。例如,如果我在文本框中输入“ a”,则它应显示数据库中所有以字母“ a”开头的名称。现在,它将显示所有包含“ a”字母的名称。 即 如果我在文本框中键入“ a”,则列表应仅包含“ Anikta”和“ Arun”。
当我在文本框中输入字母“ a”时,我当前的列表包含Arun,Anikta和Tina。
如何显示以文本框中输入的字母开头的数据库值作为列表
我尝试过的事情:
<label for="validationDefaultUsername">Authors </label>
<%
Connection con=null;
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","root");
PreparedStatement ps1= con.prepareStatement("select staffname from staff_details ");
ResultSet rs=ps1.executeQuery();
%>
<input type="text" class="form-control" name="prepared_by" id="auth" placeholder="Author " list="a_data" id="auth" required>
<%
%>
<datalist id="a_data">
<%while(rs.next())
{ %>
<option value="<%= rs.getString(1) %> "> </option>
<%
}
%>
</datalist>
</div>
答案 0 :(得分:0)
您需要在查询中使用 LIKE 运算符,因此您的代码将如下所示:
<%
Connection con=null;
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","root");
PreparedStatement ps1= con.prepareStatement("select staffname from staff_details where staffname LIKE ? ");
ps1.setString(1, search + "%");
//^ passing value to placeholder & here "%"<- can be any letter
ResultSet rs=ps1.executeQuery();
%>
另外,请参考我的answer使用ajax进行此操作。