java - 我的选择查询在使用 MySql 数据库的 Spring MVC 3 中不起作用

标签 java mysql spring-mvc spring-3

我的 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/

相关文章:

spring-mvc - 类型 元素 "mvc"的前缀 "mvc:annotation-driven"未绑定(bind)

java - 如何在打印文本字符串时使用 Thymeleaf 忽略 HTML 标签?

java - 我正在尝试使用正则表达式来匹配输入文件中的一行

C# MySql 语句。发现我的错误!

java - WaitForGcToComplete 因 DisableMovingGc 而阻塞 89.851 毫秒

php - 关于 MySQL/PHP 中事务(或表锁?)的问题

mysql - Grails/MySQL 字段长度约束

java - 设置构造函数参数时无法解析对 bean 'entityManagerFactory' 的引用;

java - 从 html 获取将显示给用户的文本

java - 如何设置 JDBCDriverLogging 的日志记录级别