2015-11-05 2 views
0

В моей программе я могу искать данные в jTable с помощью этого кода, используя jTextfield «txtsearch» в моей программе.Как искать данные в jTable с помощью MS Acess с помощью ComboBox с jTextField Netbeans

Пожалуйста, взгляните на мою фактическую программу. Вот картинка:

http://i.stack.imgur.com/QZguC.png

Это мой код в JTextField "txtsearch". В этом коде я могу выполнить поиск jTable только через Name. Я хочу искать с помощью jComboBox.

String a=txtsearch.getText(); 
conn=MyConnection.ConnectDB(); 
String sql="Select* from StdRecord WHERE Name LIKE'"+a+"%'"; 
try{ 
    pst=conn.prepareStatement(sql); 
    rst=pst.executeQuery(); 
    jTable1.setModel(DbUtils.resultSetToTableModel(rst)); 
}catch(Exception e){} 

Кроме того, на основе изображения, которые я загрузил, на мой вопрос: Как я могу найти студента по Name, MiddleName и Surname, используя поле со списком? Например, я выбираю MiddleName в поле со списком, а затем, когда я ввожу в jTextField «txtsearch», я могу искать только в таблице MiddleName.

+0

** (1) ** Вы можете иметь свой код проверить выбранное значение JComboBox и замените «MiddleName» или «Surname» на «Name» в тексте команды SQL. ** (2) ** Вы должны использовать * параметризованный запрос * (например, '... LIKE?' Вместе с 'pst.setString (...)'), чтобы защитить себя от проблем с SQL-инъекциями, например, когда ' Фамилия '' О'Коннор''. –

ответ

1

Это мой код в jTextField "txtsearch". В этом коде я могу искать jTable только по имени. Я хочу искать с помощью jComboBox.

Ваш текущий SQL использует переменную для данных, которые вы хотите найти, поэтому почему вы не можете использовать переменную для столбца, который хотите найти?

String a=txtsearch.getText(); 
String column = comboBox.getSelectedItem().toString(); 
String sql="Select* from StdRecord WHERE " + column + "LIKE'"+a+"%'"; 

Кроме того, чтобы сделать SQL немного проще кода и поддерживать Вы должны использовать PreparedStatement:

String sql = "Select* from StdRecord WHERE " + column + "LIKE ?"; 
PreparedStatement stmt = connection.prepareStatement(sql); 
stmt.setString(1, a + "%"); 
stmt.executeQuery(); 
+0

Привет, сэр @camickr. Что ты имеешь в виду. Для столбца, который я хочу найти? Я просто начинающий сэр. Пожалуйста, помогите мне с моим проектом :( –

+0

У вас есть 3 столбца в вашей базе данных «Имя», «MiddleName», «Surname». Вы не можете жестко закодировать «Имя» в SQL, потому что вы не знаете, в каком столбце пользователь хочет найти. – camickr

+0

Я, наконец, сделал это сэр. Теперь я понимаю, что мое поле txtsearch основано на трех столбцах для поиска. Спасибо, сэр. Я могу передать свой проект завтра! Спасибо за большую помощь сэр Камикр. !! PS Извините за грамматику. –