public boolean checkUser(String u,String p){
boolean b=false;
try {
String sql="select passwd from users where username='"+u+"'";
ct=new ConnDB().getConn();
sm=ct.createStatement();
rs=sm.executeQuery(sql);
System.out.println(sql);
if(rs.next()){
  if(rs.getString(1).equals(p)){
b=true;
  }
}
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}finally{
this.close();
}
return b;
}
当u为中文名时,rs的返回结果为假

解决方案 »

  1.   

    楼主到v_$sqlarea中查看实际执行的SQL是什么样子,可能有空格或中文变成其他字符了
    SELECT * FROM v_$sqlarea WHERE sql_text LIKE 'select passwd from users where username%'
      

  2.   

    不会用SELECT * FROM v_$sqlarea WHERE sql_text LIKE 'select passwd from users where username%',在什么地主用啊?
    我是刚学jsp,连的oracle数据库,在plsql中能查询含中文的记录,但在jsp的java类中不能返回结果
      

  3.   

    在plsql中执行SELECT * FROM v_$sqlarea WHERE sql_text LIKE 'select passwd from users where username%' 看你刚用jsp查询数据库是用的哪句SQL,这样你就知道问题所在了,不过v_$sqlarea这个视图要DBA权限才能查看.
      

  4.   

    你用有DBA权限的账号登陆,执行下面的SQL,再把结果贴出来,大家帮你看吧
    SELECT sql_text FROM v_$sqlarea WHERE sql_text LIKE 'select passwd from users where username%'
      

  5.   

    select passwd from users where username= '郭 '
    select passwd from users where username='???'
    select passwd from users where username='fff'
    select passwd from users where username='guo'
    select passwd from users where username='li'
    select passwd from users where username='xiaoming'
    select passwd from users where username='?ù???÷'
    select passwd from users where username='郭'
      

  6.   

    select passwd from users where username= '郭 '
    '郭 '里有空格,是对的吗?
    select passwd from users where username='???'
    select passwd from users where username='?ù???÷'
    '?ù???÷'和'???'本来是什么?
      

  7.   

    是未转换前的乱码,在提交UserBeanCl.java前加了u=new String(u.getBytes("iso-8859-1"),"gbk");
      

  8.   

    最后一条可以返回结果的吧,你直接在plsql中执行就晓得了.
    看下是不是代码有问题呢?
      

  9.   

    问题就是在plsql能执行查询到结果的,在jsp中的java类查询时不能返回结果,而在jsp没有中文时比如查询
    select * from users where username='xiaoming' 时能正确的返回
      

  10.   

    这就很诡异了,你是debug看到用中文找不到数据,还是看的页面执行结果呢?
    搞不好是这里比较不对造成的呢if rs.getString(1).equals(p)
      

  11.   

    if(rs.next()){
       System.out.println("here");
      if(rs.getString(1).equals(p)){
        b=true;
      }
    }
    问题是根本就打不出here!!!!
      

  12.   

    问题终于解决了
    方法:1.先在java类里进行转码new String(u.getBytes("iso-8859-1"),"gbk");
    2.配置servlet.xml文件,修改tomcat/conf/server.xml,在<connector port="8080" ....>改成
    <connector port="8080" .... URIEncoding="GBK"/>