2010-11-23 3 views
1

데이터베이스에 포함 된 테이블에서 모든 데이터를 가져 와서 List로 구문 분석하려고합니다. 나는 몇 가지 다른 기술을 시도하고 그것을 작동시킬 수 없습니다. 나는 소켓을 통해 보낼 수 있도록 ResultSet을 직렬화하려고하고있다. 내가 지금까지 가지고 코드는 다음과 같습니다데이터베이스 결과 집합을 개체 목록으로 구문 분석

public Object readJavaObject(String query, Connection con) throws Exception 
{   
    PreparedStatement stmt = con.prepareStatement(query); 
    //stmt.setString(1, id); 
    query_results = stmt.executeQuery(); 
    while (query_results.next()) 
    { 
     dataObject = query_results.getObject(1); 
    } 
    query_results.close(); 
    stmt.close(); 

    return dataObject; 
} 

public void run() 
{ 
    try 
    { 
     Class.forName(dbClass); 
     con = DriverManager.getConnection (dbUrl, user, pass); 
     query = "SELECT * FROM Bench_table"; 
     dataList = (List) this.readJavaObject(query, con); 
     con.close(); 
    } 
} 

나는 주위 readJavaObject를 쓸 것을 코드 모르겠어요. 문제가있는 곳을 누구든지 지적 할 수 있습니까?

도움 주셔서 감사합니다.

+0

예외가 무엇인지, 오류 메시지가 표시 될 수 있습니까? –

+0

@ The Elite Gentleman - 모든 테이블 데이터를 ResultSet 대신 List로 저장하려고합니다. 고마워요 – chrissygormley

답변

2

코드에 몇 가지 문제가 있습니다.

  1. 결과를 반복하지만 은 마지막 행의 데이터 만 반환합니다. 대신 readJavaObject 메서드에서 List를 만들고 루프를 통과 할 때마다 요소를 추가하십시오.
  2. 첫 번째 항목에서 항목을 가져 오는 대신 모든 데이터를 원한다고 가정합니다. ResultSet에서 데이터를 가져 오는 데 "get"메소드를 더 구체적으로 사용해야합니다. POJO를 만들어 데이터 행을 표현한 다음 루프 내부에 채우고 목록에 저장하십시오.
  3. POJO를 사용한다고 가정하면 목록에 제네릭을 사용하여 전송하지 않고 항목을 쉽게 가져올 수 있습니다.
3

DbUtils (apache-commons에서)을보십시오.

SQL 결과를 Java 객체에 매핑하는 더 복잡한 솔루션이 필요한 경우 object-relational mapping을 살펴보십시오. Java에서 표준은 JPA (Java Persistence API)이며 Hibernate, EclipseLink 및 OpenJPA가 가장 유명한 구현 자입니다.

+0

"최대 절전 모드가없는 pojo"및 기타 다양한 변형에 대한 지난 30 분 동안 검색 한 적이 있습니다. 이것은 내가 찾고있는 것으로 발견 된 첫 번째 참조입니다 ... 감사합니다! –

0

나는 최근에 OP가 필요로하는 것을 정확히 수행하는 CachedRowSet을 발견했습니다. 특히ResultSet을 직렬화하고 필요할 때 원본을 복원 할 수 있습니다.