我使用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;
}
答案 0 :(得分:2)
您需要更改:
if(resultSet.next()){
到
while(resultSet.next()){
resultSet.next()移动到下一行数据,然后您可以读取它。如果有一行,它也返回true,如果没有,则返回false。
目前你的代码只是要求结果集得到第一个或什么都不做,而使用while会创建一个循环,它将一直运行,直到没有剩下的行为止。 (如果没有,则根本不运行。)