如何将数据库值映射到对象数组?
public C[] getC() throws SQLException, ClassNotFoundException {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = "jdbc:odbc:Mydb";
String user = "user1";
String password = "password";
Connection con = DriverManager.getConnection(url,user,password);
Statement smt= con.createStatement();
String query = "Select ssn, cname from customer";
ResultSet rs = smt.executeQuery(query);
C [] c = new C[getNumberOfCustomers()];
while (rs.next()){
String ssn = rs.getString("ssn");
String customer_name = rs.getString("cname");
}
return custarray;
}
这里是C的代码:如何将数据库值映射到对象数组?
public class C {
private String name;
private String SocialSecurityNumber;
public C(String name, String SocialSecurityNumber) {
this.name = name;
this.SocialSecurityNumber = SocialSecurityNumber;
}
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getSocialSecurityNumber() { return SocialSecurityNumber; }
public void setSsn(String SocialSecurityNumber) {
this.SocialSecurityNumber = SocialSecurityNumber;
}
}
在这里,我顺便SSN和CUSTOMER_NAME到C[]
阵列
C [] c = new C[getNumberOfCustomers()];
int i = 0;
while (rs.next()){
c[i++] = new C(rs.getString("cname"), rs.getString("ssn"));
}
FYI具有问题:甲List<C>
will be better than an array of C
,下面的代码使用一个可重复使用的列表,new
仅在target == null
(例如第一次使用)时发生。
public List<C> getC(List<C> target) throws SQLException,ClassNotFoundException{
if(target == null) {
target = new LinkedList<C>();
}
else {
target.clear();
}
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = "jdbc:odbc:Mydb";
String user = "user1";
String password = "password";
Connection con = DriverManager.getConnection(url,user,password);
Statement smt= con.createStatement();
String query = "Select ssn, cname from customer";
ResultSet rs = smt.executeQuery(query);
while(rs.next()){
target.add(new C(rs.getString("cname"), rs.getString("ssn")));
}
return target;
}
我得到NullPointerException异常的above.Here是代码公共类C {1 \t私人字符串名称; \t \t private String SocialSecurityNumber; \t \t public C(String name,String SocialSecurityNumber){ \t \t this.name = name; \t \t this.SocialSecurityNumber = SocialSecurityNumber; \t} \t \t公共字符串的getName(){ \t \t回报名; \t} \t \t 公共无效的setName(字符串名称){ \t \t this.name =名; \t} \t \t 公共字符串getSocialSecurityNumber(){ \t \t返回socialSecurityNumber的; \t} \t公共无效setSsn(字符串socialSecurityNumber的){ \t \t this.SocialSecurityNumber = socialSecurityNumber的; \t} – user2382753 2013-05-14 18:04:14
是的,你说得对,代码编辑 – Aubin 2013-05-14 18:11:36
你可以这样做:
List<C> list = new ArrayList<C>();
while (rs.next()){
String ssn = rs.getString("ssn");
String customer_name = rs.getString("cname");
C c = new C(ssn, customer_name);
list.add(c);
}
C[] lc = new C[list.size()];
list.toArray(lc);
我们假定你是一个特定的'C'构造的存在。是什么让你认为它确实存在? – 2013-05-14 17:54:16
请张贴的Ç – Aubin 2013-05-14 17:34:48
您有什么问题的代码? – 2013-05-14 17:36:13
你忘了实际创建C对象(坏名字btw)并将它们添加到数组中。这是你的实际问题吗?这真的需要一个问题吗? – 2013-05-14 18:42:54