我正在使用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中有多个值符合条件并且我想全部显示它们,我该怎么办?请指教。
答案 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。