2014-07-04 3 views
0

나는 ResultSet 객체에서 열을 제거 할 수 있는지 알고 싶습니다. select 문으로 선택하지 않는 것만으로도 충분합니다. 두 개의 열이있는 거대한 ResultSet이 있습니다. 300k 레코드 이상, 난 그냥 내 프로그램의 첫 번째 단계에 대한 2 열이 필요합니다, 두 번째 단계는 ResultSet을 그대로 받아서 POI를 사용하여 Excel 파일에 인쇄합니다. mi 마음에 오는 유일한 것은 그것을 인쇄 할 때 표시하지 않는 것이지만 두 번째 단계 논리를 수정하게됩니다.ResultSet에서 열을 제거 할 수 있습니까?

그런 다음 행을 삭제하여 열을 삭제하는 것과 비슷한 작업을 수행 할 수 있는지 궁금합니다.

resultSet.getAbsolte(4); 
resultSet.deleteRow(); 

감사

+1

['deleteRow'] (http://docs.oracle.com/javase/8/docs/api/java/sql/ResultSet.html#deleteRow--)가 해당 행을 삭제한다는 사실을 알고 싶습니다. 결과 집합뿐만 아니라 데이터베이스에서 가져옵니다. –

+0

@MarkRotteveel, 나는 그 사실을 알지 못했다. 나는이 메소드가 ResultSet 내용에만 영향을 미친다고 생각했다. 좋은 점은 그것을 사용하지 않았다는 것입니다. – Israelm

답변

1

일부 데이터 구조로 두 열을 읽기 : 당신은 단순히 할, 두 열에서 값을 필요로 첫 번째 단계로 수행 한 후,

class TableX { 
    List<?> firstColVals; 
    List<?> secondColVals; 
} 

그런

TableX tableVals = readTable(); // your usual while (rs.next()) { ... } 
firstStep(tableVals); 
tableVals.secondColVals = null; // now unneeded data can be freed by GC 
secondStep(tableVals.firstColVals); 
+0

Victor 감사합니다.이 좋은 해결 방법입니다. 데이터 구조의 내용으로 ResultSet을 채울 수있는 방법이 있는지 알 수 있습니까? TableVals.firstColVals는 List 대신 ResultSet 형식이 될 수 있습니다. 두 번째 단계는 다음과 같이 ResultSet을받습니다. 매개 변수. – Israelm

+1

직접 해보지는 않았지만 다음을 시도하십시오. http://docs.oracle.com/javase/tutorial/jdbc/basics/cachedrowset.html. 난 당신이 2 단계에서 원하지 않는 데이터를 제거 할 수 있습니다 가정, cachedRowSet.updateXXX (2, null); –

+0

네, 모든 행을 업데이트하고 모든 초의 열을 null로 설정하면 프로그램이 두 번째 열에 아무 것도 인쇄하지 않는 것처럼 가장 좋은 방법 인 것 같습니다. 결과 집합을 ResultSet.CONCUR_UPDATABLE로 변경해야했습니다. 레코드를 업데이트하십시오. 다시 도움을 주셔서 감사합니다 :) – Israelm

관련 문제