日期:2014-05-20  浏览次数:20778 次

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