即使数据库已填充,ResultSet.next()是否可以返回空?

时间:2015-12-14 12:19:33

标签: java jdbc login

我问了一个关于这个JDBC登录应用程序的问题我在Eclipse上开发时没有识别我在表单中输入的凭据。您可能希望read首先了解我的问题。

在使用我的代码(并进行多次测试以检查JDBC驱动程序是否已加载并构建到类路径中)之后,我发现该错误更多地与ResultSet没有返回我请求的特定行我的查询。我只是想知道这是否是常见事件,还是我编写了错误的代码?

这里是Login类的(已编辑)代码:

var find = function(results, type, counter, adjPx, $el) {
    if (results.length > 0) {
        if (type === 'next') {
            if (counter > 0 && results.length == counter) {
                counter = 0;
            }
        } else if (type === 'prev') {
            if (counter < 0) {
                counter = results.length - 1;
            } else if (counter === results.length) {
                counter = counter - 2;
            }
        }
        results.removeClass("active");
        $(results[counter]).addClass("active");
        if ($el) {
            $('html,body').animate({
                scrollTop: $(results[counter]).offset().top - adjPx
            }, 100);
        } else {
            $el.animate({
                scrollTop: $(results[counter]).offset().top - adjPx
            }, 100);
        }

        counter = (type === 'prev') ? counter - 1 : counter + 1;
    }
    return counter;
};

非常感谢任何形式的帮助。谢谢!

2 个答案:

答案 0 :(得分:1)

在编辑问题之前,可以看到您正在从请求中读取凭据。您是否检查了用户名和密码是否包含正确的值(在控制台上注销)?昨天我在你的另一个问题上更新了我的答案。您的输入字段没有名称,因此当您尝试将其从请求中删除时,用户和密码的值可能为空。

解释可以在这里找到:Does form data still transfer if the input tag has no name?

答案 1 :(得分:0)

解决了这个问题。查询是正确的,但ResultSet返回为空,因为由于某种原因,无法读取输入名称=“pword”中的值(当我尝试将其值打印到控制台时返回null),因此找不到匹配项数据库。认为它与输入类型密码有关(这很奇怪,因为它应该以这种方式工作)。我所做的是我将输入类型更改为文本,这是有效的,除了我的表单上的密码字段中的字符可以看到。将其更改回输入类型=密码,并以某种方式解决了我的问题。不知道为什么会这样,但重定向现在正在发挥作用。谢谢@ErikP,谢谢你的帮助!