读书人

JAVA连接数据库时为什么输出的u 和p

发布时间: 2012-03-05 11:54:02 作者: rapoo

JAVA连接数据库时,为什么输出的u 和p 值都是不正确?
<%

String u=request.getParameter("user");
String p=request.getParameter("userPassword");

/*if(u.equals("shunping") && p.equals("123") )
{
response.sendRedirect("wellcom.jsp?username="+u);}
else {response.sendRedirect("index.jsp");}*/

Connection ct=null;
Statement sm=null;
ResultSet rs=null;


try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
ct=DriverManager.getConnection("jdbc:odbc:mytest");
sm=ct.createStatement();

rs=sm.executeQuery("select * from userTable ");

while(rs.next())
{
if(rs.getString("name").equals(u)) out.println("用户名存在!"+u);
else out.println("用户名不存在"+u);

if(rs.getString("password").equals(p)) out.println("密码正确!"+p);
else out.println("密码不正确"+p);
}
}
catch(Exception e)
{e.printStackTrace();}
finally{
try{
if(rs!=null) rs.close();
if(sm!=null) sm.close();
if(ct!=null) ct.close();}
catch(SQLException e) {e.printStackTrace();}
}

%>
结果 :用户名不存在???ê 密码不正确33 用户名不存在???ê 密码不正确33
注释掉的部分,是运行成功的。
使用的 <%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="gb2312"%>
想知道是不是因为使用是sun.jdbc.odbc.JdbcOdbcDriver的原因。因为安com.microsoft.jdbc.sqlserver.SQLServerDriver
时,弄了半天也没成功

[解决办法]
1.前天传入的参数是乱码,你可以自己先把前台传入的参数打印出来看看
2.你后台这逻辑也太奇怪了吧,为什么要把所有的数据查出来再比较,直接把你传入的username跟password加到where条件语句中查询不就可以了
[解决办法]
过滤器来处理乱码,method=“post",百度吧,有很多讨论这个的。
[解决办法]
你前面页面传递参数时估计就是乱码了,后面String u=request.getParameter("user");得到的u、p就是乱码了
写个过滤器来解决乱码问题吧。
[解决办法]
是因为乱码才出现这情况的
[解决办法]

探讨

嗯,现在知道出错的原因了

[解决办法]
逻辑有错误.你这样等于说有一条记录匹配不上就报错。而应该是所有记录都匹配不上才应该报错
<%

String u=request.getParameter("user");
String p=request.getParameter("userPassword");

/* if(u.equals("shunping") && p.equals("123") )
{
response.sendRedirect("wellcom.jsp?username="+u);}
else {response.sendRedirect("index.jsp");}*/

Connection ct=null;
Statement sm=null;
ResultSet rs=null;


try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
ct=DriverManager.getConnection("jdbc:odbc:mytest");
sm=ct.createStatement();

rs=sm.executeQuery("select * from userTable ");
boolean no=false;
while(rs.next())
{
if(rs.getString("name").equals(u)){
no=true;
if(rs.getString("password").equals(p)) out.println("登陆成功");
else


out.println("密码不正确");
}
}
if(no)out.println("用户名不存在");
catch(Exception e)
{e.printStackTrace();}
finally{
try{
if(rs!=null) rs.close();
if(sm!=null) sm.close();
if(ct!=null) ct.close();}
catch(SQLException e) {e.printStackTrace();}
}

%>
[解决办法]

探讨

1.前天传入的参数是乱码,你可以自己先把前台传入的参数打印出来看看
2.你后台这逻辑也太奇怪了吧,为什么要把所有的数据查出来再比较,直接把你传入的username跟password加到where条件语句中查询不就可以了

读书人网 >J2SE开发

热点推荐