2012-12-12 2 views
1

안녕하세요. 원한다면 Console에 데이터베이스 테이블의 전체 내용을 표시하는 것이 좋습니다. 내가 먼저 데이터베이스에서 레코드를 가져오고 ArrayList를 보관하려고하지만 어떤 일이이 표시 insted 표시되지 않습니다ArrayList를 사용하여 데이터베이스에서 내 콘솔의 모든 데이터를 표시하려고합니다.

[[email protected]] 
[[email protected], [email protected]] 
[[email protected], [email protected], [email protected]] 

내가 무엇을해야하는지 완전히 혼란 스러워요. 내 코드는 다음과 같습니다

EmployeeDTO java file 

public class EmployeeDTO 
{ 
    //private properties 
    private int empNo; 
    private String eName; 
    private String jobTitle; 
    //setters 
    public void setEmpNo(int val){empNo=val;} 
    public void setEName(String val){eName=val;} 
    public void setJob(String val){jobTitle=val;} 
    // getters 
    public int getEmpNo(){return empNo;} 
    public String getEName(){return eName;} 
    public String getJob(){return jobTitle;} 
} 

내에는 EmployeeList 자바 코드는 다음과 같습니다

public class EmployeeList 
{ 

    public static void main(String argv[]) 
    { 
    Connection conn=null; 
    Statement stmt=null; 
    ResultSet rs=null;  

    try 
    { 
    // Load the JDBC driver 
    // This can be skipped for Derby, but derbyclient.jar has to be in the CLASSPATH 
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
    String accessFileName = "E:/Database/java"; 
    conn=DriverManager.getConnection("jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ="+accessFileName+".accdb;"); 

    // Build an SQL String 
    String sqlQuery = "SELECT * from Employee"; 

    // Create a Statement object 
    stmt = conn.createStatement(); 

    // Execute SQL and get obtain the ResultSet object 
    rs = stmt.executeQuery(sqlQuery); 
    ArrayList<EmployeeDTO> employees = new ArrayList<EmployeeDTO>(); 
    // Process the result set - print Employees 
    while (rs.next()) 
    { 
     EmployeeDTO currentEmp = new EmployeeDTO(); 

     currentEmp.setEmpNo(rs.getInt("EMPNO")); 
     currentEmp.setEName(rs.getString("ENAME")); 
     currentEmp.setJob(rs.getString("JOB_TITLE")); 
     employees.add(currentEmp); 
     System.out.println(employees); 
    }  
    } 
    catch(SQLException se) 
    { 
     System.out.println ("SQLError: " + se.getMessage()+ " code: " + se.getErrorCode()); 
    } 
    catch(Exception e) 
    { 
     System.out.println(e.getMessage()); 
     e.printStackTrace(); 
    } 
    finally 
    { 
     // clean up the system resources 
     try 
     { 
     rs.close();  
     stmt.close(); 
     conn.close(); 
     } 
     catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 
} 
} 

내 데이터베이스입니다 :

Employee 
EMPN  ENAME  JOB_TITLE 
1  abc  xyz 
2  pqr  mno 
3  lmn  hij 

이 제발 도와주세요 내가 오전 내 전체 코드 및 데이터베이스 을 게시 콘솔에 표시하는 방법이 잘못되었습니다.

+0

while 루프 후이 작업을 수행 다음에 스스로 질문을 향상시킬 수 있습니다. – Jonathan

답변

0

구현이 필요한 것 같습니다. 귀하의 DTO에 toString()의 직원 이름, 직업 등으로 구성된 문자열을 반환하도록 구현합니다. 10 tips for implementing toString()에 대한 링크가 있습니다.

각 직원을 읽은 후에 직원 목록을 인쇄합니다. 오히려 직원 자신을 인쇄해야한다고 생각합니다.

System.out.println(employees); // this is the list itself! 
3

당신은 당신의 EmployeeDTO 클래스에서 toString()를 구현해야합니다. Eclipse를 사용하는 경우 클래스 -> 소스 -> Generate toString()을 마우스 오른쪽 단추로 클릭하십시오.

1

EmployeeDTO 클래스에서 toString을 덮어 써야합니다. 당신이 사용할 수

@Override 
public String toString() { 
    return String.format("%d\t%s\t%s", empNo, eName, jobTitle); 
} 

은 별도의 행에 각 employee를 인쇄하려면 : 당신은 서식을 할 String.format를 사용할 수

for (EmployeeDTO employee : employees) { 
    System.out.println(employee); 
} 
+0

고맙습니다. 작동하지만 외선은 EmployeeDTO [empNo = 1, eName = Suryakant Yadav, jobTitle = Android Developer], EmployeeDTO [empNo = 2, eName = Archie Dsouza, jobTitle = Office Manager], EmployeeDTO [empNo = 3, eName = Suyog Sawant, jobTitle = WT Developer]] 데이터베이스에 표시되는 것처럼 행 단위로 데이터를 표시하고 싶습니다 – surya

+0

데이터베이스에있는 데이터를 인쇄 할 수 있다면 – surya

+0

고맙습니다. 단일 줄에 단일 데이터를 표시 할 수 있도록 새 줄에 대한 모든 데이터를 나눕니다. – surya

1
ArrayList<EmployeeDTO> employees = new ArrayList<EmployeeDTO>(); 
// Process the result set - print Employees 
while (rs.next()) 
{ 
    EmployeeDTO currentEmp = new EmployeeDTO(); 

    currentEmp.setEmpNo(rs.getInt("EMPNO")); 
    currentEmp.setEName(rs.getString("ENAME")); 
    currentEmp.setJob(rs.getString("JOB_TITLE")); 
    employees.add(currentEmp); 
    System.out.println(employees); 
}  

를이 코드에서, 당신은 ArrayList에로 개체되지 가하고 있습니다 실제 String/Value가 들어 있습니다. 당신은 당신은 while 루프의 라인

System.out.println(employees); 

를 제외하고 그에게 모든 권리를하고있는 [email protected]

+0

답변도 매우 간단하고 솔직한 솔루션을 포함해야합니다. – kolossus

0

로 점점 이유입니다.

EmployeeDTO 클래스에 toString()을 오버로드하지 않고 ArrayList를 표시 할 수 없습니다.

대신 배열 목록을 표시하려면, 당신은 당신이 그렇게에서 [서식 도움말] 봐 (http://stackoverflow.com/editing-help) 페이지를 취해야한다

for(EmployeeDTO emp : employees) 
{ 
    System.out.println(emp.getEmpNo() + " " + emp.getEName() + " " + emp.getJob()); 
} 
+0

고맙습니다 내가 원하는대로 데이터를 표시하지만 내 질문 하나 즉, EmploeeDTO에서 tostring 메서드를 제거 할 때도 데이터를 표시합니다. 왜 그렇습니까? 가능한 경우 나에게 설명해주십시오. – surya

+0

당신은 환영합니다 !! 위의 경우 우리는 for 루프의 arraylist에서 매번 단일 객체에 액세스하고 getter 메소드 (getEmpNo(), getEName(), emp()를 사용하여 해당 객체의 멤버 값을 가져 오기 때문에 toString .getJob()). – codeMan

+0

또한 답변을 수락하는 것을 잊지 마세요 !! :) – codeMan

관련 문제