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

Java mysql查询(“SELECT*FROM movies”仅返回1行,java,mysql,Java,Mysql,我正在做一个简单的电影租赁应用程序,DAO部分的这个方法应该返回一个电影对象数组,但只返回一部电影 我检查了数据库,连接正常,但只列出第一行,没有其他内容。数据库中当前有3个电影条目 public ArrayList<Pelicula> obtainMovies () { ArrayList<Movie> p=new ArrayList<>(); Movie pelic=new Movie(); try{ conn=

我正在做一个简单的电影租赁应用程序,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()){
此外,还需要向列表中添加多个实例,因此将pelic移动到循环体中

while(rs.next()){
  Movie pelic=new Movie();
或者,您将只向列表中添加一个Movie实例,并在每次循环迭代中修改该单个实例

 if(rs.next()){
您可能希望循环所有结果:

 while(rs.next()){

非常非常感谢!这很有魅力。我还有很多东西要学。谢谢你的回复!第一个回复就成功了。