我正在做一个简单的电影租赁应用程序,这个DAO部分的方法应该返回一个“电影”对象数组,但只返回一个电影。
我检查了数据库,连接很好,但是只列出了第一行,没有别的。数据库中当前有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;
    }

最佳答案

假设你的表有不止一行,这个

if(rs.next()){

应该使用类似于
while(rs.next()){

此外,还需要向List添加多个实例,因此将pelic移动到循环体中
while(rs.next()){
  Movie pelic=new Movie();

或者您将只向Movie添加一个List实例(并在每次循环迭代中修改该实例)。

关于java - Java mysql查询(“SELECT * FROM电影”仅返回1行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26835156/

10-13 21:27