2013-05-14 2 views
1
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[] массива

+3

Пожалуйста, пост код C – Aubin

+2

Какую проблему вы с? –

+0

Вы забудете фактически создать объекты C (неправильное имя btw) и добавить их в массив. Это ваша настоящая проблема? Это действительно вопрос? –

ответ

1
C [] c = new C[getNumberOfCustomers()]; 
int i = 0; 
while (rs.next()){ 
    c[i++] = new C(rs.getString("cname"), rs.getString("ssn")); 
} 

FYI: A 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; 
} 
+0

Я получаю nullpointerexception для вышеперечисленного. Вот открытый класс кода C { \t private String name; \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 (имя String) { \t \t this.name = имя; \t} \t \t общественности Строка getSocialSecurityNumber() { \t \t возвращение SocialSecurityNumber; \t} \t общественного недействительными setSsn (Строка SocialSecurityNumber) { \t \t this.SocialSecurityNumber = SocialSecurityNumber; \t} – user2382753

+0

Да, вы правы, код изменен – Aubin

0

Вы можете сделать это:

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); 
+0

Вы предполагаете существование конкретного конструктора 'C'. Что заставляет вас думать, что это на самом деле существует? –

Смежные вопросы