查看 ResultSet API public interface ResultSetextends 表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。 ResultSet 对象具有指向其当前数据行的光标。最初,光标被置于第一行之前。 next 方法将光标移动到下一行;因为该方法在 ResultSet 对象没有下一行时返回 false, 所以可以在 while 循环中使用它来迭代结果集。
查看 ResultSet API public interface ResultSetextends 表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。 ResultSet 对象具有指向其当前数据行的光标。最初,光标被置于第一行之前。 next 方法将光标移动到下一行;因为该方法在 ResultSet 对象没有下一行时返回 false, 所以可以在 while 循环中使用它来迭代结果集。
public interface ResultSetextends
表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。
ResultSet 对象具有指向其当前数据行的光标。最初,光标被置于第一行之前。
next 方法将光标移动到下一行;因为该方法在 ResultSet 对象没有下一行时返回 false,
所以可以在 while 循环中使用它来迭代结果集。
public interface ResultSetextends
表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。
ResultSet 对象具有指向其当前数据行的光标。最初,光标被置于第一行之前。
next 方法将光标移动到下一行;因为该方法在 ResultSet 对象没有下一行时返回 false,
所以可以在 while 循环中使用它来迭代结果集。
麻烦您再找一找其他原因,就算改成while异常同样发生在这个位置。因为我的数据库只会有一条记录,作为管理员信息。所以用if。
麻烦你了。
login.jsp
<%@page contentType="text/html;charset=GBK"%>
<%@page import="java.util.*"%>
<html>
<head>
<title>用户登陆</title>
<script language="javascript" type="">
function checkForm() {
if (document.form1.username.value == "") {
alert("用户名不能为空");
form1.username.focus();
return false;
}
document.form1.submit();
}function resetForm() {
document.form1.reset();
}function check1Form()
{
alert("用户名不能为空");
}
</script><%
synchronized(application) {
Vector ListUser=null;
ListUser =(Vector)application.getAttribute("UserName");
String UserName1="";
UserName1=(String) session.getAttribute("sName");
if ((!session.isNew())&&(!UserName1.equals("")))
{
ListUser.remove(UserName1);
}
}
%>
<style type="text/css">
<!--
.style2 {font-size: 24px}
-->
</style>
</head><body bgcolor="#FF9900">
<br>
<table align="center">
<tr bgcolor="#FFFF99">
<td width="93%" align="right"><span class="style2">BBS登陆</span></td>
</td>
</tr>
</table>
<br>
<table width="100" border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
</tr>
<tr align="center" valign="middle">
<td>
<form name="form1" method="post" action="logincheck.jsp">
<table width="273" align="center">
<tr bgcolor="#FFFF99">
<td width="38%" height="18" align="right">用户名:</td>
<td width="62%">
<input type="text" name="username">
</td>
</tr>
<tr bgcolor="#FFFF99">
<td width="38%" height="18" align="right">密码:</td>
<td width="62%">
<input type="password" name="password">
</td>
</tr>
<tr bgcolor="#FFFF99">
<td width="38%" height="19" align="right">身份:</td>
<td width="62%">
<input type="radio" name="userType" value="Y">
会员
<input type="radio" name="userType" value="N" checked>
非会员 </td>
</tr>
</table>
</form>
</td></tr>
<tr bgcolor="#FF9900" valign="middle" align="center">
<td height="20"><img src="button_1.gif" width="52" height="21" onClick="checkForm();" style="cursor:hand" alt=""> <img src="button_2.gif" width="52" height="21" onClick="resetForm();" style="cursor:hand" alt=""></td>
</tr>
<tr bgcolor="#FF9900" valign="middle" align="center">
<td height="50"> </td>
</tr>
</table>
</body>
</html>这个jsp页面能正常显示。
修正方法:catch里加入错误处理逻辑。
把代码放到我机子上面一点问题都没有。
建议楼主将logincheck.jsp页面删除了,重新new一个页面,将内容复制进去再试试。
找到白痴错误了我数据库都是用windows身份验证的所以没有授予sa登录权限,而书上的代码是用sa登录的
不管是不是连接数据库出错,还是查询语句出错,都不会冒一个泡这,样如果真连接数据库出错了或sql语句有问题,得不到任何信息,返回的ResultSet 为null,导致楼主一调用rs.next,就直接出错。
修正方法:catch里加入错误处理逻辑。
多亏了您的指导把找错范围缩小了好多。。