2013-05-31 2 views
1

Мой DAO Класс:Мой Выбрать запрос не работает в Spring MVC 3 с использованием базы данных MySQL

public boolean RetreiveId(UserBean userBean){ 
    boolean userExists = false; 

    /* Provide table name and column name carefully in the sql query below. 
    * here i have a table "userbean" with two column's 
    * "userId" and "password" both of varchar2 type. 
    */ 
      String sql1 = "select userId from userbean "+"where userId = ?"; 
jdbcTemplate.update(sql1, new Object[] { userBean.getUserId()}); 
          System.out.println("^^^^^^^^^^sql1"+sql1); 
      int rowcount=1; 
      if(rowcount==1){ 
     userExists = true; 
    } 
    return userExists; 
} 
} 

MyController Класс

@RequestMapping("/RetreiveId") 
public ModelAndView RetreiveId(@ModelAttribute @Valid UserBean  userBean,BindingResult result,HttpSession session){ 
    ModelAndView view = new ModelAndView("loginLatest"); 

    //if input bean does not have validation error then proceed 
    if(!result.hasFieldErrors()){ 
     //if not a valid user then add error 
     //else proceed to user welcome page 


         if(!combatService.RetreiveId(userBean)){ 
      result.addError(new ObjectError("err", "Invalid Credentials")); 
     } 
//   if(!combatService.RegisterUser(userBean)){ 
//    result.addError(new ObjectError("err", "Invalid Credentials")); 
//   } 
//   else{ 
//       session.setAttribute("Sess_Var", userBean.getUserId()); 
////        view.addObject("Sess_Var", userBean.getUserId()); 
//    view.setViewName("welcome"); 
//   } 

         else{ 
//       session.setAttribute("Sess_Var", userBean.getUserId()); 
//        view.addObject("Sess_Var", userBean.getUserId()); 
      view.setViewName("loginLatest"); 
         } 
    } 

Это не работает, он дает ошибку, Insert Query работает ну, но я хочу получить пароль конкретного имени пользователя

Request processing failed; nested exception is  
org.springframework.dao.DataIntegrityViolationException: PreparedStatementCallback; SQL  
[select userId from userbean where userId = ?]; Can not issue executeUpdate() for 
SELECTs; nested exception is java.sql.SQLException: Can not issue executeUpdate() for  
SELECTs 

ответ

1

Эта линия причиной проблемы:

jdbcTemplate.update (SQL1, новый объект [] {userBean.getUserId()});

Вы пытаетесь передать инструкцию select в метод, который может выполнять только оператор вставки, удаления или обновления. jdbcTemplete.update Doc

Переключиться на метод queryForObject.

Я думаю, что это должно помочь:

public boolean RetreiveId(UserBean userBean){ 
    boolean userExists = false; 

/* Provide table name and column name carefully in the sql query below. 
* here i have a table "userbean" with two column's 
* "userId" and "password" both of varchar2 type. 
*/ 
    String sql1 = "select userId from userbean "+"where userId = ?"; 
    UserBean ub = jdbcTemplate.queryForObject(sql1, 
       new Object[] { userBean.getUserId()}); 
    System.out.println("^^^^^^^^^^sql1"+sql1); 

    if (ub != null) { 
      userExists = true; 
    } 
    return userExists; 
    } 

}

+0

jdbcTemplate.execute (sql1, new Object [] {userBean.getUserId()}); Ошибка: «Нет подходящего метода для выполнения (String, Object [])» – pankaj369

+0

Сэр, пожалуйста, сообщите мне об ошибке и что делать? bcoz я должен использовать это, чтобы получить значения имени пользователя, введенного пользователем «новый объект [] {userBean.getUserId()}« – pankaj369

+0

Может ли кто-нибудь сказать мне решение? Пожалуйста, помогите мне? – pankaj369

1

Я думаю, здесь проблема с jdbcTemplate.update. Попробуйте jdbcTemplate.execute. Надеюсь, он сработает.

jdbcTemplate.execute есть доступ к данным JDBC. more info

jdbcTemplate.update Операция обновления (например, заявление о вставке, обновлении или удалении). more info

0

Ответ на мой вопрос

String sql1 = "select password from userbean where userId = ?"; 
String name = (String)jdbcTemplate.queryForObject(
     sql1, new Object[] { userBean.getUserId() }, String.class); 

И имя переменной будет содержать пароль. Большое спасибо всем.