Java mysql查询(“SELECT * FROM movies”只返回1行

时间:2014-11-10 00:45:41

标签: java mysql

我正在做一个简单的电影租用应用程序,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;
    }

2 个答案:

答案 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()){