문제

MySQL 데이터베이스에서 데이터를 검색하기 위해 Java에서 응용 프로그램을 작성하고 있습니다. 쿼리를 실행 한 후 결과 세트를 얻고 레코드를 추출하기 위해 다음을 수행합니다.

while (rs.next())
        {
            for (int column = 1; column <= rm.getColumnCount(); column++) {
                row.add(rs.getObject(column));
            }
            result.add(row.toString());
            row.clear();
        }

어디 Rs = resultSet 및 rm = resultSetmetadata

문제는 내가해야한다는 것입니다 result.add (row.tostring ()); 단지보다는 result.add (행); (2 차원 배열 목록을 만들고 싶습니다). 그렇지 않으면 빈 결과를 얻습니다.

나는 퍼팅을 시도했다 row.clear (); 처음에 ~을 위한 루프이지만 그 결과 모든 결과가 마지막 레코드의 여러 인스턴스로 채워집니다. 처럼 에 추가되지 않았습니다 결과 마지막까지 마지막 레코드와 같을 때까지. Arraylist를 "커밋"해야합니까? 다른 Arraylist에 elemt로 추가하기 전에? 그렇다면 어떻게? 또한 호기심으로 인해 왜 그렇습니다 .TOSTRING () 다르게 작동합니까?

도움이 되었습니까?

해결책

row.toString ()을 추가하면 결과에 추가 할 새 문자열 객체를 작성합니다.

반면에 행을 추가하면 결과에 동일한 객체를 추가하므로 매번 row.clear ()가 호출되면 결과의 모든 행을 비우십시오.

당신이해야 할 일은 for 루프 전에 새 행 객체를 만들고 행을하지 않는 것입니다. 다음은 예입니다.

while (rs.next())
        {
            row = new ArrayList();

            for (int column = 1; column <= rm.getColumnCount(); column++) {
                row.add(rs.getObject(column));
            }

            result.add(row);
        }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top