#java
#java
Вопрос:
У меня есть форма поиска. В этом я ищу имя в алфавитном порядке, когда я ввожу алфавит в текстовое поле, и если в моей базе данных есть какое-либо имя из этого алфавита, то оно показывает сообщение о том, что запись найдена (при нажатии кнопки поиска), но когда я ввожу букву, в которой нет имени, начинающегося с этой буквы, даже появляется сообщение «запись найдена».
Мой код:
if(searchby.equals("Name"))
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
System.out.println("n Driver loaded");
Connection con=DriverManager.getConnection("jdbc:odbc:wanisamajDB");
Statement stmt=con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM FAMILYcensus WHERE Name LIKE '" tfsearch.getText() "%'ORDER BY Name ASC");
StringBuilder sb = new StringBuilder();
while (rs.next()) {
String name = rs.getString("Name");
sb.append(name System.getProperty("line.separator") );
}
String names = sb.toString().trim();
JOptionPane.showMessageDialog(null, "RECORD FOUND");
con.close();
tasearch.setText(names);
//con.close();
}
catch(SQLException eM)
{
JOptionPane.showMessageDialog(null,"INVALID RECORD");
}
catch(Exception et)
{
System.out.println("error:" et.getMessage());
}
Комментарии:
1. Судя по вашему предыдущему и текущему вопросу, вам следует изучить базовый поток работы программы. Доступно множество руководств и bools, и я действительно рекомендую вам воспользоваться одним или двумя. Что касается вашего вопроса — вы не вернулись из своего метода ни на одном шаге, поэтому Java все равно выполнит эту строку.
Ответ №1:
Ваш код не проверяет, rs
является ли оно пустым, и не настраивает все так, как если бы поиск не удался, перед повторением rs
. Пустой результат из SELECT
не создает исключения.
Если в RecordSet
ничего нет, то вам следует сделать с вашей формой все, что вы хотите сделать, чтобы указать, что записи не были найдены.
Ответ №2:
Ну, вы никогда не проверяете, вернул ли ваш запрос что-нибудь или нет.
Сделайте это и действуйте соответственно, когда результатов нет.
Редактировать: MByD делает действительно хороший вывод в своем прямом комментарии к вашему вопросу. Похоже, вы не понимаете основных концепций «Если — то — еще», учитывая вопросы, которые вы публикуете на SO. Копирование и вставка кода из примеров без понимания того, что вы делаете, может оказаться не лучшим способом для вас научиться программировать. Хорошее базовое введение в книгу по программированию может стать ценным вложением средств.
Ответ №3:
Похоже, что если не будет создано исключение, вы получите это сообщение. Может быть, протестируйте это как
if(sb.length()==0) JOptionPane.showMessageDialog(null, "NO RECORD FOUND");
else JOptionPane.showMessageDialog(null, "RECORD FOUND");