Поиск идентификатора через таблицу базы данных Java не работает

Я пытаюсь понять, почему я не могу искать более одной записи в базе данных с помощью Java. Это приложение Java jsp, но я, кажется, изо всех сил пытаюсь понять, в чем проблема. Я новичок в jsp, но уверен, что все равно

 try{  
  String myDriver = "org.gjt.mm.mysql.Driver";//db driver 
  String myUrl = database;//connect to db
  Class.forName(myDriver);
  Connection conn = DriverManager.getConnection(myUrl, user, password);//authenticating on database
  String query = "SELECT Cus_ID, Cus_name, Cus_surname, Cus_mail, Cus_Address, Cus_telephone FROM customerdb";//mysql select statement 
  PreparedStatement sta = conn.prepareStatement(query); //prepared statement 
  ResultSet rst = sta.executeQuery(query);


     while (rst.next())
  {


    String cusid = rst.getString("Cus_ID"); //variable to retrieve the customer from the database
    String cusn = rst.getString("Cus_name");
    String cussn = rst.getString("Cus_surname");
    String cusm = rst.getString("Cus_mail");
    String cusaddr = rst.getString("Cus_Address");
    String custel = rst.getString("Cus_telephone");


  if (!(customer.equals(cusid))){


      request.setAttribute("al", "user not found");                       
      request.getRequestDispatcher("account.jsp").forward(request, response); //and user will stay on login page


  }if (customer.equals(cusid)){

      System.out.println("hello" + cusid);
      request.setAttribute("ID", cusid);
      request.setAttribute("name", cusn);
      request.setAttribute("surname", cussn);
      request.setAttribute("mail", cusm);
      request.setAttribute("address", cusaddr);
      request.setAttribute("telephone", custel); 

      request.getRequestDispatcher("account.jsp").forward(request, response);
  }else{

  }
  }
}catch(ClassNotFoundException | SQLException | HeadlessException ex) {
            Logger.getLogger(LogInController.class.getName()).log(Level.SEVERE, null, ex);

  }

Что вы имеете в виду под i can not search more than one record in a database? вы выходите из цикла while после первой итерации, либо показываете user not found, либо показываете информацию о пользователе, если первая строка набора результатов совпадает с вводом. И, кстати, почему бы вам не отфильтровать данные в базе данных с помощью предложения WHERE в запросе SQL?

Ivan 30.03.2018 18:43

Спасибо миллион, я только что изменил соответственно

VmTech 30.03.2018 19:26
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
84
1

Ответы 1

Метод PreparedStatement#executeQuery() не принимает никаких параметров. Измените это:

ResultSet rst = sta.executeQuery(query);

к этому:

ResultSet rst = sta.executeQuery();

Это довольно частая ошибка при использовании этого API. У вас могут быть и другие проблемы с вашим кодом, но это должно заметно улучшить.

Бесконечно благодарен.

VmTech 30.03.2018 19:26

Другие вопросы по теме