我的 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;
}
}
我的 Controller 类
@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
最佳答案
此行导致问题:
jdbcTemplate.update(sql1, new Object[] { 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;
}
关于java - 我的选择查询在使用 MySql 数据库的 Spring MVC 3 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16857153/