<html> <head>
<title>登录验证界面</title> </head>
<body><%
try{
Connection conn =null;
PreparedStatement pstmt =null;
ResultSet rs=null;
String driverName ="com.sql.jdbc.Driver";
String dbName="user";
String url1="jdbc:sql://localhost/"+dbName;
String url2="?user=sa&password=lx13784429739";
String url3="&Unicode=true&characterEncoding=GB2312";
String url=url1+url2+url3; Class.forName(driverName); conn=DriverManager.getConnection(url);
request.setCharacterEncoding("GB2312");
String name=request.getParameter("username");
String pw=request.getParameter("pass");
String sql="select * from user_b where(uname=?andupassword=?) ";
pstmt =conn.prepareStatement(sql);
pstmt.setString(1,name);
pstmt.setString(2,pw);
rs=pstmt.executeQuery();
if(rs.next()){ %><%=name%>:登陆成功!<br><% }
else{%> <%=name %>:登录失败!<br><%}
}catch(Exception e)
{%>
出现异常错误!<br><%=e.getMessage()%>
<%}
finally{ if(rs!=null){rs.close();}
if(pstmt!=null){pstmt.close();}
if(conn!=null){conn.close();}
}%>
</body>
</html>
问题解决:
rs pstmt conn都定义到try代码外面,不然它们的范围就只在try{}花括号里面有效。