1

我的 DAO 课程:

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");
                       }
    }

它不起作用,它给出错误,插入查询运行良好,但我想检索特定用户名的密码

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
4

3 回答 3

1

我认为问题出在jdbcTemplate.update. 试试jdbcTemplate.execute。我希望它会奏效。

jdbcTemplate.execute是 JDBC 数据访问操作。更多信息

jdbcTemplate.update是更新操作(例如插入、更新或删除语句)。更多信息

于 2013-05-31T12:39:21.210 回答
1

此行导致问题:

jdbcTemplate.update(sql1, new Object[] { userBean.getUserId()});

您正在尝试将 select 语句传递给只能执行 insert、delete 或 update 语句的方法。 jdbcTemplete.update 文档

切换到 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;
     }

}

于 2013-05-31T12:41:51.137 回答
0

我的问题的答案是

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

名称变量将包含密码。非常感谢大家。

于 2013-06-01T04:54:40.257 回答