(1)处换成while (rs.next()){
 System.out.println(rs.getString(1)); 
}
试试,但是你下面说的打印rs.next()是false,是不是就没值啊

解决方案 »

  1.   

    你现在的rs没引用,遍历一下才可以的,楼上的说的没错 rs.next()一下就行了
      

  2.   

    rs.next()引用一下,应该就可以了...为什么不把数据库操作分离出去?而要放在JSP页面来处理呢?这样如果有业务变更改动起来很麻烦的..
      

  3.   

    补充说明:我按大家说的方法确实提取到了数据,可还是有个现象不明白,代码如下:
                  ......
                  rs = pstmt.executeQuery() ;
        System.out.println(rs.next());(1)
        if(rs.next()){
        System.out.println(rs.getString(1));}
    程序输出结果如下:
    admin
    123
    false
    按大家所说,假如不rs.next(),是取不到值的,既然(1)处为false了,怎么还能进入if,进入if后怎么会输出两个字段的值,最后还输出了false.希望哪个高手给讲讲。
    我所理解的程序输出结果应该是:
    false
    admin
    不知道哪个地方理解的不对
      

  4.   

    你的顺序是这样的么?
       System.out.println(rs.next());(1) 
        if(rs.next()){ 
        System.out.println(rs.getString(1));} 
    }
    还是这样的
     
        if(rs.next()){ 
        System.out.println(rs.getString(1));} 
    }
       System.out.println(rs.next());(1)我觉得你写的是第二种,一腻味你的输出是
    admin 
    123 
    false
    这么个顺序,如果是第二种,肯定是false啊,不管你rs怎么样都是false,因为你上面if读完了走到这里说明rs引用没有了.
      

  5.   

    我的顺序确实是这种的:
    System.out.println(rs.next());(1) 
        if(rs.next()){ 
        System.out.println(rs.getString(1));} 

    当时只是为了测试用,把(1)放在了前面,结果却发现了很多问题都不明白。
    按这种写法,我输出的结果仍然是:
    admin
    123
    false
      

  6.   

    你重新配一下吧.可能是缓存没捣过来.你如果用tomcat的话看看webapp目录里面的生成文件是什么样的.你这样肯定是有问题的,输出顺序不一致.
      

  7.   

    我根本没有用Eclipe 发布。我是通过Tomcat指向虚拟目录实现的,而且还发现一个问题:
        System.out.println(rs.next());(1) 
        if(rs.next()){ 
        System.out.println(rs.getString(1));
        System.out.println(“test”);

    我输出的结果仍然是: 
    admin 
    123 
    false 
    test 也没输出,我重启Tomcat,重新登录界面,还是这个问题,从来没遇到过。我想还是程序的思路不对吧,还是rs.next()有问题
      

  8.   

    还是tomcat配置的问题 你再好好看看吧 祝你好运
      

  9.   

    <%!
              String DBDriver="org.git.mm.mysql.Driver";
      String url="jdbc:mysql://localhost:3306/test?user=root&password=root";
      Connection conn=null;
      PreparedStatement pstmt=null;
      ResultSet rs =null;
    %>
    <% // 接收参数
    String id = request.getParameter("id") ;
    String password = request.getParameter("password") ;

    %>
    <%
    String sql = "SELECT * FROM person WHERE id=? and password=?" ;

    try
    {
      Class.forName(DBDriver).newInstance();
              conn=DriverManager.getConnection(url);
      pstmt = conn.prepareStatement(sql) ;
      pstmt.setString(1,id) ;
      pstmt.setString(2,password) ;
      rs = pstmt.executeQuery() ;
               
    if(rs.next())
    {
       System.out.println(rs.getString(1)); 
     
                 session.setAttribute("uname",rs.getString(1)) ;
    }
    else
    {
    // 保存错误信息
    request.setAttribute("err","错误的用户名及密码!!!") ;
    }
    rs.close() ;
    pstmt.close() ;
    conn.close() ;
    }
    catch(Exception e)
    {}
    %>
    刚刚重新调整了程序,发现错误的根本原因还是rs.next()一直为false,程序更本没有运行到if里,看来还是数据库连接中出了错。可就是不知到错在哪
      

  10.   

    谢谢各位指点,我已找出错误原因,现说明原因:
      1.我的程序一直就没执行到if(){}里面至于为什么会输出:admin 123 是因为我在做测试时曾用    system.out.println(name); system.out.println(password);测试,所以控制台输出的是从前一页面接收到的值,而不是数据库中的值,所以在输出数据后仍然会打印false
      2.最主要的错误还是这里:
        String DBDriver="com.mysql.jdbc.Driver"; 
        String DBDriver="org.git.mm.mysql.Driver";
    这是在做最后检查时,怀疑出的问题,果然是这里,我不知道这两个驱动到底有什么区别,总之String DBDriver="org.git.mm.mysql.Driver";就不能进行连接数据库,希望哪位朋友知道两个的区别和使用条件,请继续跟贴,详细说说!