刚开始学java,看了几个例子程序,然后改写,JSP调用bean如果返回rs对象,在jsp中通过<rs.getString("属性")>可以返回正确的值。我想作一个密码验证bean,传人用户名,和密码,检索数据库看是否吻合,给个提示,可是总也不成,查询有问题,可能执行sql语句没结果。我把这个程序简化,参数也直接在bean里面初始化了,看能不能返回一个记录属性的字符串。程序如下-------------------------AddrBook.java--------------
package test; 
import java.sql.*; public class AddrBook { 
   String a;
   Connection conn=null; 
   Statement stmt=null;
   ResultSet rs=null; public String executeQuery() { 
 try {
     Class.forName("com.mysql.jdbc.Driver");
     conn = DriverManager.getConnection("jdbc:mysql://localhost/artikel","root","7788");
   } catch(java.lang.ClassNotFoundException e) { 
     System.err.println("Load Driver Error: " + e.getMessage()); 
   } 
catch(SQLException ex) { 
     System.err.println("Get Connection Error: " + ex.getMessage()); 
    } 
  try { 
     stmt = conn.createStatement(); 
     rs = stmt.executeQuery("SELECT * FROM user WHERE username = 'ga'"); // 查询数据库,指向用户ga的记录
     a= rs.getString("key"); //ga的密码 赋值给 a,     System.out.println(a);   
   } catch(SQLException ex) { 
     System.err.println("SQL Error: " + ex.getMessage()); 
   } 
     return a;  //返回密码
   }    public void close() throws SQLException {
     stmt.close(); 
     conn.close();
   }  

-----------------check.jsp--------------
<%@ page language="java" import="java.sql.*" %><jsp:useBean id="workM" scope="page" class="test.AddrBook" /><% 
 String a=workM.executeQuery(); 
%> a=
<%=a%>
<% workM.close(); %>
-------------------------------------------
结果应该是 用户 ga 的密码,可是总显示 a=null我刚开始学java,不大适应面向对象编程,可能上面有些想当然的东西,高手一定能手到擒来,不胜感激

解决方案 »

  1.   

    记录集第一次是位为第一条记录之前的,所以少了一个操作
    if(rs.next())
    {
      a= rs.getString("key");
    }这样试试吧....---------------如果可以请结贴吧
      

  2.   

    默认情况下,rs是指向第一个结果得前一个,也就是空
    所以要
    rs.next()
    将游标指向第一个结果
    这样才可以取得结果楼上应当告之错在何处
      

  3.   

    结贴了,呵呵,第一次在csdn发问,果然有效率,多谢 AWUSOFT 和assed 两位的指点!