1

こんにちは、コンソールにデータベース テーブルの内容全体を表示したいだけです。最初にデータベースからレコードを取得してArrayListに保存しようとしていますが、これを表示するだけでは何も表示されません:

[com.suven.java.EmployeeDTO@970c0e]
[com.suven.java.EmployeeDTO@970c0e, com.suven.java.EmployeeDTO@987197] 
[com.suven.java.EmployeeDTO@970c0e, com.suven.java.EmployeeDTO@987197, com.suven.java.EmployeeDTO@497904]

私は何をすべきか完全に混乱しています。私のコードは次のとおりです。

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 Javaコードは次のとおりです。

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

完全なコードとデータベースを投稿しましたが、コンソールに表示する方法が間違っています

4

5 に答える 5

3

クラスに実装する必要がありtoString()ます。EmployeeDTOEclipse を使用している場合は、メソッドを生成できます。クラスを右クリック -> ソース -> toString() を生成...

于 2012-12-12T10:46:39.890 に答える
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に配置しています。これが、com.suven.java.EmployeeDTO@970c0eとして取得している理由です。

于 2012-12-12T10:48:37.450 に答える
1

クラスでオーバーライドtoStringする必要があります。フォーマットを行うためにEmployeeDTO使用できます:String.format

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

それぞれを別々の行に印刷するemployeeには、次を使用できます。

for (EmployeeDTO employee : employees) {
    System.out.println(employee);
}
于 2012-12-12T10:47:02.417 に答える
0

toString()DTO での実装が必要なようです。従業員名、仕事などで構成される文字列を返すように実装します... toString() を実装するための 10 のヒントへのリンクを次に示します。

また、各従業員を読​​んだ後、従業員のリストを印刷することにも注意してください。むしろ、従業員自体を印刷する必要があると思います。

System.out.println(employees); // this is the list itself!
于 2012-12-12T10:46:28.417 に答える
0

あなたはラインを除いてそれをすべてうまくやっています

System.out.println(employees);

while ループで。

EmployeeDTO クラスで toString() をオーバーロードしないと、そのような ArrayList を表示できません。

代わりに、配列リストを表示するには、while ループの後にこれを行います

for(EmployeeDTO emp : employees)
{
    System.out.println(emp.getEmpNo() + " " +  emp.getEName() + " " + emp.getJob());
}
于 2012-12-12T10:57:33.410 に答える