2016-01-06 5 views
1

Я создаю программу, чтобы включить мое резюме, поскольку я студент колледжа, у которого нет опыта работы. Для этой части программы я хочу разрешить пользователю выполнять поиск в базе данных sqlite для сотрудника по номеру идентификатора, имени или фамилии. Он работает правильно, однако, он будет показывать только работника с именем, которое написано точно, и закрывает чувствительность. Я хочу, чтобы пользователь мог ввести одну букву или более, и он отобразит все в базе данных, содержащей эту букву или пару букв, и так далее.SQLITE FILTER QUERY ПОИСК

Это то, что у меня есть:

 try { 
     String field = (String)fieldCombo.getSelectedItem();//gets jcombobox selection 
     //jcombobox fields are slightly different than the column names in sql table so i did this 
     if(field.equals("First Name")) { 
      newField = "firstName"; 
     } 
     else if(field.equals("Last Name")) { 
      newField = "lastName"; 
     } 
     else if(field.equals("ID Num")) { 
      newField = "idNum"; 
     } 
     String sql = "select idNum as 'ID Number', firstName as 'First Name', lastName as 'Last Name' from tableEMPLOYEE where " + newField + " = ?"; 
     pst = connect.prepareStatement(sql); 
     pst.setString(1, searchField.getText()); 
     rs = pst.executeQuery(); 
     empTable.setModel(DbUtils.resultSetToTableModel(rs)); 

    } 
    catch (Exception e) { 
     JOptionPane.showMessageDialog(null, e); 
    } 
+0

Посмотрите в использовании 'оператора LIKE'. Но 'LIKE' не может быть серебряной пулей за то, что вы пытаетесь сделать. –

+1

Большое спасибо @Tim Biegeleisen. –

ответ

1

, как Тим упоминается в разделе комментариев. SQL LIKE - это то, что вам может понадобиться.

Но это будет не так быстро, если база данных большая и пользователь быстро набирает скорость, она не будет чувствовать себя достаточно отзывчивой.

Для создания запроса в SQLite нечувствителен к регистру вы можете использовать:

SELECT * FROM ... WHERE name = 'enterName' COLLATE NOCASE 
+1

Спасибо, что сработало. 'String sql =" выберите idNum, firstName, lastName из таблицыEMPLOYEE, где «+ newField +», как «+ + searchField.getText() +«% »COLLATE NOCASE»; –