gpt4 book ai didi

java - 无法进入jsp文件中的if语句

转载 作者:行者123 更新时间:2023-11-29 17:31:04 25 4
gpt4 key购买 nike

我正在开发一个登录页面,成员(member)可以在其中进行登录和注册。当我将用户名和密码与数据库表中的用户数据进行比较时,我遇到了麻烦。这段代码抛出了这个异常,但我不明白出了什么问题。服务器抛出此消息:

javax.servlet.ServletException: java.sql.SQLException: Before start of result set

String search_in ="select USERNAME,PASSWORD from USERS";
ResultSet search_result= myStatement.executeQuery( search_in );



while( search_result.next() ){
a[i] = search_result.getString("USERNAME");
b[i] = search_result.getString("PASSWORD");


//new_username and new_password are form input parameters
if( a[i].equals(new_username) && b[i].equals(new_password) ){
out.println("in if statement<br>");
found = true;
break;
}
i++;
}

最佳答案

您的错误消息足以说明根本原因..!!

javax.servlet.ServletException: java.sql.SQLException: Before start of result set

如果我们尝试访问 resultSet 游标未索引的行,就会发生这种情况。那是什么???

当我们触发 select 查询时,结果中我们可以获得多行、单行或根本没有行(结果取决于您的查询和数据)。

这些行存储在 resultSet 实例中。

要访问这些行,我们可以通过 resultSet.next() (或通过任何其他方式......)对它们进行迭代循环。正如您在 .next() 函数上使用 while 循环一样,我正在考虑同样的事情。

因此,这个 next() 函数实际上将光标移动到下一行,并且最初它指向实际结果行之前的一个索引,这意味着它的索引位于 -1 value,因此一旦我们陷入 while 循环,resultSet.next() 函数就会将光标移动到前面的一个位置,即第一次它将指向位置 处的实际行>0 等等,直到没有什么可迭代的。

您提到的错误是因为光标最初指向 -1 ,当它尝试迭代(即移动到真正的第一行)时,它会失败,因为没有从该行返回查询,因此错误显示在 ResultSet 开始之前

我希望它能澄清您对 resultSet 的看法,并让您了解幕后发生的事情。

因此,针对您的问题的建议是,尝试检查/更改您的查询或在数据库中查看它是否确实包含应在该查询中返回的任何此类行。

关于java - 无法进入jsp文件中的if语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50656324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com