iam*_*esy 9 java sql collections jdbc
我是Java新手,只是进入查询数据库.到目前为止,我在ResultSetMetaData中得到了我的结果.我认为对于数据集中的每一行,我应该将它添加到某种形式的集合中?谁能告诉我这方面的最佳做法?
谢谢,
琼西
创建一个对象来保存数据.遍历结果集,为每个结果集创建一个对象,并将它们存储在ArrayList或HashMap中,具体取决于您希望如何使用数据.这允许您关闭数据库,它为您提供了良好的对象,您可以在其上构建操作数据的方法.
它还允许您编写使用不需要依赖数据库的对象的代码.如果您以后想要拔出数据库并切换到文本文件或其他任何东西,那么很容易做到,您仍然可以使用相同的对象和方法.
通常我们有一个类,其中的字段对应于表.然后,每当我们在结果集中有一个(完整的)行时,我们就会创建一个这个类的实例.
例:
考虑一个像这样创建的表:
CREATE TABLE customer (First_Name char(50), Last_Name char(50),
Address char(50), City char(50), Country char(25), Birth_Date date);
Run Code Online (Sandbox Code Playgroud)
模型类将是这样的:
public class Customer {
private String firstName;
private String lastName;
private String address;
private String city;
private String country;
private Date date;
public String getFirstName() {
return firstName;
}
// getters for all fields
public void setFirstName(String firstName) {
this.firstName = firstName;
}
// setters for all fields
public String toString() {
return String.format("[%s, %s, %s, %s, %s, %s]", firstName,
lastName, address, city, country, date);
}
}
Run Code Online (Sandbox Code Playgroud)
现在,如果您读取数据并拥有ResultSet,则可以创建新的客户对象并设置字段:
List<Customer> customers = new ArrayList<Customer>();
ResultSet rs = stmt.executeQuery("SELECT * from CUSTOMER;");
while (rs.next()) {
Customer customer = new Customer();
customer.setFirstName(rs.get("First_Name"));
// ... and so on
customers.add(customer);
}
Run Code Online (Sandbox Code Playgroud)
A List似乎很合乎逻辑.如果你不会有重复,并且你不关心结果的顺序,那么也许是Set.
相关实施List:
ArrayList:这是由数组支持的,因此对特定索引的查找应该很快相关实施Set:
HashSet:由背靠HashMap所以O(1)插入时间TreeSet:尊重数据的排序(使用compareTo方法) - 因此迭代数据将按顺序 - 权衡是O(log n)插入时间| 归档时间: |
|
| 查看次数: |
7581 次 |
| 最近记录: |