我正在做一个简单的电影租用应用程序,DAO
部分的这个方法应该返回一个“电影”对象数组,但只返回1个电影。
我检查了数据库,连接很好,但只列出第一行而没有别的。目前数据库中有3个电影条目。
public ArrayList<Pelicula> obtainMovies () {
ArrayList<Movie> p=new ArrayList<>();
Movie pelic=new Movie();
try{
conn=connect();
String sql="SELECT * FROM movies";
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
if(rs.next()){
pelic.setTitle(rs.getString("title"));
pelic.setGenre(rs.getString("genre"));
pelic.setRating(rs.getInt("rating"));
pelic.setRented(rs.getBoolean("rented"));
p.add(pelic);
}
else {return null;}
return p;
}
答案 0 :(得分:3)
假设你的表有多行,这个
if(rs.next()){
应该使用像
这样的循环while(rs.next()){
此外,您需要向List
添加多个实例,因此将pelic
移至循环体
while(rs.next()){
Movie pelic=new Movie();
或者您只会向Movie
添加一个List
实例(并在每次循环迭代时修改该单个实例)。
答案 1 :(得分:1)
if(rs.next()){
您可能想要遍历所有结果:
while(rs.next()){