java - mysql java 参数索引超出范围

标签 java mysql

List<UserLoginDTO> userDTOList=new ArrayList<UserLoginDTO>();
UserLoginDTO user= null;
try {
    pstmt = conn.prepareStatement(NHMQueryConstant.GET_SEARCH_USER_DETAIL.toString());
    pstmt.setString(1,searchUser);  
    rs = pstmt.executeQuery();  
    while (rs.next()) {
        user= new UserLoginDTO();

        //user= new UserLoginDTO();
        //String login= rs.getString("Login_ID");

        user.setUserId(rs.getInt("M_USER_ID"));
        user.setUserName(rs.getString("M_USER_NAME"));
        user.setLoginID(rs.getString("Login_ID"));
        user.setUserTypeID(rs.getInt("USER_TYPE_ID"));
        user.setPassword(rs.getString("PASSWORD"));
        user.setMobile(rs.getString("MOB_NO"));
        user.setEmail(rs.getString("EMAIL"));
        userDTOList.add(user);

    }
} catch (Exception e) {
    throw new NHMException(e.getMessage());
}

public static final StringBuilder GET_SEARCH_USER_DETAIL =
   new StringBuilder().
    append(" SELECT * FROM  m_user_master").
    append(" WHERE M_User_Name = IFNULL(NULL,M_User_Name)
               AND Login_id = IFNULL('?',Login_id) limit 1 ");

我在这段代码中得到的参数索引超出了范围。 敬请指正

最佳答案

sql 查询中的占位符不应加引号。正确查询:

public static final StringBuilder GET_SEARCH_USER_DETAIL = new StringBuilder().append(" SELECT * FROM m_user_master").append(" WHERE M_User_Name = IFNULL(NULL,M_User_Name)AND Login_id = IFNULL(?,Login_id) limit 1 ");

关于java - mysql java 参数索引超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39072165/

相关文章:

java - Flinkrocksdb压缩过滤器不工作

java - 在多项 Activity 中使用改造响应的最佳方式

mysql - 一个表中的多个计数无意中对行中的列求和

php - 将 IF 语句设置为写入或不写入 MySQL 中的列

php - 检查两个用户在 php/mysql 中是否是 friend

mysql - 你需要在 mysql 数据库从属上使用触发器吗?

java - NEO4J 在密码查询中使用数组或集合作为参数

java - 更新 Firebase 中的键值

java - 检查序列中存在的数字

mysql - 加入 parent 与 child 的一个例子