MySQL选择仅从eclipse返回一行

时间:2014-04-16 10:40:18

标签: mysql sql eclipse select row

我使用eclipse和mysql库,我试图从数据库中获取产品列表(只有两个),它只返回第一行。 为什么查询只返回一行?我认为它可能与错误的进口有关,我不知道,我迷失了。

import java.sql.SQLException;
import java.util.ArrayList;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;


import classes.Product;

public class ProductDAO {

public ArrayList<Product> getProducts(){
    Connection connection = null;
    ResultSet resultSet;
    PreparedStatement statement;
    ArrayList<Product> products = new ArrayList();
    Connect con = new Connect();

    try{
        connection = con.connectTo();
        statement = (PreparedStatement) connection.prepareStatement("SELECT * FROM products ORDER BY sales DESC;");
        resultSet = statement.executeQuery();
        if(resultSet.next()){
            Product product = new Product();
            product.setName(resultSet.getString("name"));
            product.setMake(resultSet.getString("make"));
            product.setPrice(resultSet.getInt("price"));
            product.setDescription(resultSet.getString("description"));
            product.setCategory(resultSet.getString("category"));
            product.setSales(resultSet.getInt("sales"));
            product.setImage(resultSet.getString("image"));
            products.add(product);
        }
    }catch(SQLException ex){
        System.out.println(ex);
    }


    return products;
}

1 个答案:

答案 0 :(得分:2)

您需要更改:

if(resultSet.next()){

while(resultSet.next()){

resultSet.next()移动到下一行数据,然后您可以读取它。如果有一行,它也返回true,如果没有,则返回false。

目前你的代码只是要求结果集得到第一个或什么都不做,而使用while会创建一个循环,它将一直运行,直到没有剩下的行为止。 (如果没有,则根本不运行。)