Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的查询函数,返回单列中所有值的列表_Java_Jdbc - Fatal编程技术网

Java中的查询函数,返回单列中所有值的列表

Java中的查询函数,返回单列中所有值的列表,java,jdbc,Java,Jdbc,我试图编写一个函数,返回表中特定用户的所有旧密码值。 但是,我不知道如何正确地格式化它 public List<String> fetchPasswordHistory(int userId) { String query = "SELECT NEW_PASSWORD FROM PASSWORD_HISTORY WHERE USER_ID = ?"; List<String> strLst = jdbcTemplate.query(que

我试图编写一个函数,返回表中特定用户的所有旧密码值。 但是,我不知道如何正确地格式化它

public List<String> fetchPasswordHistory(int userId) {
        String query = "SELECT NEW_PASSWORD FROM PASSWORD_HISTORY WHERE USER_ID = ?";
        List<String> strLst  = jdbcTemplate.query(query,new RowMapper<String>() {
            @Override
            public String mapRow(ResultSet rs, int rowNum) throws SQLException {
                return rs.getString(3);
            }
        }, userId);

        if ( strLst.isEmpty() ) {
            return null;
        }
        else {
            return strLst;
        }
    }
公共列表获取密码历史记录(int userId){
String query=“从密码历史记录中选择新密码,其中用户\u ID=?”;
List strLst=jdbcTemplate.query(query,new RowMapper(){
@凌驾
公共字符串mapRow(ResultSet rs,int rowNum)引发SQLException{
返回rs.getString(3);
}
},用户ID);
if(strLst.isEmpty()){
返回null;
}
否则{
返回strLst;
}
}
这将给出表中的前3个字符串。我希望它返回从该查询生成的每个值。 然后我将比较用户的待定新密码和数据库中的所有旧密码,这样用户就不会重复密码

此外,如果查询没有返回任何内容,则会中断。
有什么帮助吗?

根据我的经验,这个查询应该会失败,因为在mapRow方法中,您请求的是当前行的第3列。但是在“select”语句中,只能获得一列。因此,您应该编写rs.getString(1)(它不是基于零的,因此1将返回第一列的值)


而且,据我所知,你实际上没有把结果限制在3行。您将获得查询的所有行。mapRow将对每一行执行,您将提取密码列表。

我建议返回null而不是空列表是不正确的行为。如果(strLst.isEmpty()),是否为NPE at
if(strLst.isEmpty())
?如果这样做
if(null==strList | | | strLst.isEmpty())
Ok,如果我想要与该用户ID关联的每个新密码值,我应该如何格式化它?