在Web服务中返回多个值

时间:2012-04-10 09:35:42

标签: java web-services jax-rpc

我正在使用java和eclipse设计一个web服务,它返回在数据库中标记为customer的用户详细信息

我已成功返回单个用户的详细信息(因为dB中只有一个条目),并带有以下代码:

public class GetData {

public LoginDetails getDetails(){    
    Connection conn;
    Statement stmt;
    ResultSet rs;

    try {
        LoginDetails lds=new LoginDetails();
        Class.forName(driver);
        conn=DriverManager.getConnection(url,username,password);
        stmt=conn.createStatement();
        String sql="select * from login where usertype='customer'";
        rs=stmt.executeQuery(sql);
        while(rs.next()){
            lds.setUsername(rs.getString(1));
            lds.setPassword(rs.getString(2));
            lds.setUsertype(rs.getString(3));
            lds.setActive(rs.getString(4));

        }
        return lds;
    } 
    catch(ClassNotFoundException c){
        c.printStackTrace();
    }
    catch (SQLException e) {
        e.printStackTrace();
    }

    return null;
}
}

如果dB中有多个值符合条件并且我想全部显示它们,我该怎么办?请指教。

2 个答案:

答案 0 :(得分:3)

将您的方法签名更改为public LoginDetails[] getDetails()

并按如下方式扩展你的while循环:

    Collection<LoginDetails> details = new ArrayList<LoginDetails>();
    while(rs.next()){
        LoginDetails lds=new LoginDetails();
        lds.setUsername(rs.getString(1));
        lds.setPassword(rs.getString(2));
        lds.setUsertype(rs.getString(3));
        lds.setActive(rs.getString(4));
        details.add(lds);

    }
    return details.toArray(new LoginDetails[0]);

答案 1 :(得分:0)

从方法中返回一个暗示为java.util.List的集合类型,最好是ArrayList。