我有一个项目架构,其中包含一个student_record表,其中包含firstname,middlename和lastname属性。 现在使用java,我想在我的jTable中显示学生列表,例如姓氏以A开头。结果将在我按下一个键后立即自动显示。但我认为我的代码并不完全正确。
public void search()
{
try{
String sql = "Select * from project.student_record where lastname like '%search'";
st = conn.prepareStatement(sql);
rs = st.executeQuery();
stud.setModel(DbUtils.resultSetToTableModel(rs));
}catch(Exception e){
System.out.println(e);
}
}
-----当我输入一个字母时,这是用于textField的
private void searchKeyReleased(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
Thread e = new Thread() {
public void run() {
while (true) {
try {
Thread.sleep(1000);
search();
} catch (Exception e) {
}
}
}
};
{
}
e.start();
}
答案 0 :(得分:0)
如果'search'通常是姓氏的第一个字母,那么您的外卡(%)应该只在LIKE子句的末尾,而不是在开头。如果你把它留在开头,我为搜索词输入字母“M”,那么它将返回所有结果,其中M位于第一个字符位置或字符串中的任何其他位置。
SELECT * FROM student_record WHERE lastname LIKE 'search%'"
以上内容将要求用户的搜索词位于字符串的开头,并匹配姓氏字段中的任何后续字符。