如何处理 java sql exception:exhausted 结果集
how to handle java sql exception:exhausted result set
我对以下代码有疑问。帮我!!
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:xe","system","**********");
Statement st=conn.createStatement();
String sql="select password from db where username='user'";
ResultSet rs=st.executeQuery(sql);
rs.next();
String password=rs.getString("password");
if(password.equals(pass))
{
RequestDispatcher rd=req.getRequestDispatcher("/home.jsp");
rd.forward(req,res);
}
else
{
out.println("invalid username and password");
}
当我执行此代码时,我收到 java sql 异常:结果集耗尽。提前致谢...
与其使用 rs.next();
,不如将其与 while 一起使用,例如 while(rs.next())
。获得结果集后,指针 将指向第一条记录。每次执行 rs.next()
时, 指针 将前进到下一条记录。如果与 while 一起使用,一旦到达结果集的末尾,rs.next()
将在迭代所有记录后 return false。在你的例子中,由于你没有检查结果集是否已经耗尽并试图推进 指针 ,你得到了异常。
正确,因为如果您输入错误的用户名或密码,将不会返回任何记录。因此,当您在这种情况下使用 rs.next();
时,它会尝试访问空结果集的第一行
String password=rs.getString("password");//error, if rs is empty
在 where
子句中您没有使用 user
变量
where
子句应为 where username='"+user+"'";
和
而不是
rs.next();
使用
if(rs.next())
{
String password=rs.getString("password");
........
}
我对以下代码有疑问。帮我!!
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:xe","system","**********");
Statement st=conn.createStatement();
String sql="select password from db where username='user'";
ResultSet rs=st.executeQuery(sql);
rs.next();
String password=rs.getString("password");
if(password.equals(pass))
{
RequestDispatcher rd=req.getRequestDispatcher("/home.jsp");
rd.forward(req,res);
}
else
{
out.println("invalid username and password");
}
当我执行此代码时,我收到 java sql 异常:结果集耗尽。提前致谢...
与其使用 rs.next();
,不如将其与 while 一起使用,例如 while(rs.next())
。获得结果集后,指针 将指向第一条记录。每次执行 rs.next()
时, 指针 将前进到下一条记录。如果与 while 一起使用,一旦到达结果集的末尾,rs.next()
将在迭代所有记录后 return false。在你的例子中,由于你没有检查结果集是否已经耗尽并试图推进 指针 ,你得到了异常。
正确,因为如果您输入错误的用户名或密码,将不会返回任何记录。因此,当您在这种情况下使用 rs.next();
时,它会尝试访问空结果集的第一行
String password=rs.getString("password");//error, if rs is empty
在 where
子句中您没有使用 user
变量
where
子句应为 where username='"+user+"'";
和
而不是
rs.next();
使用
if(rs.next())
{
String password=rs.getString("password");
........
}