2016-01-26 3 views
0

приведенный ниже код JDBC вставляет данные в таблицу в базе данных MySQL. Он работает нормально, за исключением ответа out.println и requestdispatcher. Когда обновление будет успешным, оно должно напечатать «Успешно создана учетная запись сотрудника». И аналогично, если обновление не увенчалось успехом. Однако он не печатает результат.Может кто-нибудь, пожалуйста, скажите мне, почему out.println не работает?

 try{ 

      Class.forName("com.mysql.jdbc.Driver").newInstance(); 
      Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/payroll_system", "root", ""); 
      PreparedStatement ps = con.prepareStatement("INSERT INTO payroll_system.employee_info(employeeID, FirstName, LastName, Admin,DOB,Address,Email,HourlyRate,Gender,ALeaveBalance,SLeaveBalance,ActiveStatus,Role,BSB,BankName,AccNumber,SuperNumber,SuperCompany) values(?,?,?,?,?,?,?,?,?,?,?,1,?,?,?,?,?,?)"); 
      ps.setString(1, employee_id); 
      ps.setString(2, firstName); 
      ps.setString(3, lastName); 
      ps.setString(4, admin); 
      ps.setString(5, DOB); 
      ps.setString(6, address); 
      ps.setString(7, email); 
      ps.setString(8, HPR); 
      ps.setString(9, gender); 
      ps.setString(10, ALB); 
      ps.setString(11, SLB); 
      ps.setString(12, Role); 
      ps.setString(13, BSB); 
      ps.setString(14, BankName); 
      ps.setString(15, BAN); 
      ps.setString(16, SAC); 
      ps.setString(17, SAN); 

      int count = ps.executeUpdate(); 

      if(count>0) { 
       out.println("Employee Account Successfully Created"); 
      } 
      else { 
       out.println("Failed to create account"); 
      } 

     }catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 
+0

только мои 2 цента: сервлет не должен содержать каких-либо операций SQL. – dit

+0

@BalusC Извините, я новичок в веб-приложениях. Что именно это значит? – javaprogrammer

+0

@BalusC А, спасибо! Кстати, else {part не печатается всякий раз, когда вставка терпит неудачу. – javaprogrammer

ответ

2

Вы звоните executeUpdate дважды, второй вызов не будет возвращать ничего, вы должны удалить вызов.

Таким образом, просто заменить:

ps.executeUpdate(); 

int count = ps.executeUpdate(); 

с:

int count = ps.executeUpdate(); 
+1

Спасибо! haha мой плохой. – javaprogrammer

+0

Кстати, просто любопытно, что employee_id в моей таблице является первичным ключом. Если сервлет пытается вставить уже существующий employee_id, это приведет к сбою вставки? – javaprogrammer

+0

Несомненно, MySQL даст ошибку о нарушении первичного ключа, что даст вам SQLException. – Berger

Смежные вопросы