51代码网ORACLEMYSQLSQL SERVER其它数据库java/jspasp/asp.netC/C++/VC++APP应用其它语言服务器应用
您现在的位置: 51代码网 >> java >> 文章正文

AVA连接数据库时,为什么输出的值都是不正确

更新时间:2012-1-6:  来源:51代码网

 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条件语句中查询不就可以了

你前面页面传递参数时估计就是乱码了,后面String u=request.getParameter("user");得到的u、p就是乱码了
写个过滤器来解决乱码问题吧。

String user=new String((request.getParameter("user")).getBytes("ISO-8859-1"),"gb2312");

  • 上一篇文章:
  • 下一篇文章: 没有了
  • 赞助商链接
    推荐文章
  • 此栏目下没有推荐文章
  • {
    设为首页 | 加入收藏 | 友情链接 | 网站地图 | 联系站长 |