我对基于ResultSet
创建的对象有疑问。
假设我有一个产品DAO类:
public class ProductDAO
{
...
ResultSet products = statement.executeQuery("SELECT * FROM PRODUCT ");
if (products .next()) {
int prodId = products .getInt("id");
String prodName = products .getString("name");
Product product = new Product(prodId, prodName);
}
...
}
假设SQL查询返回5行。结果,产品对象最终会包含什么?它是否只包含最终返回行的值(在本例中为第5行)?
答案 0 :(得分:2)
如果您的查询提取多行,则应该有一个循环并创建多个Product实例。您当前的代码只会读取第一行并创建一个Product实例。
这是一个更好的实现,可以加载查询返回的所有数据:
List<Product> productList = new ArrayList<Product>();
while (products.next()) {
int prodId = products .getInt("id");
String prodName = products .getString("name");
Product product = new Product(prodId, prodName);
productList.add(product);
}