2012-01-23 2 views
2

저는 Java에 대해 처음 접했고 MySQL 쿼리를 통해 반환 된 모든 열을 가져올 수 있는지 궁금합니다.Java resultset max column?

 while (rs.next()) { 
      for (byte i = 1; i < 10; i++) { 
       result = result+" "+rs.getString(i); 
      } 
     } 

내가 for 루프 때문에 동적 MySQL의 쿼리의 컬럼의 최대 숫자에 10를 원하는 : 예를 들어,

SELECT * FROM `login` 

그리고 나는 결과를 반환하기 위해이 코드를했다. 이 작업을 수행하는 간단한 방법이 있습니까? 감사.

답변

3

은 열 수는 반환

ResultSetMetaData rsmd = rs.getMetaData(); 
int numberOfColumns =rsmd.getColumnCount(); 

while (rs.next()) { 
     for (byte i = 1; i <= numberOfColumns; i++) { 
      result = result+" "+rs.getString(i); 
     } 
} 
0

SELECT *를 사용하지 않는 것이 좋습니다. 원하는 열을 알고 있다면 철자를 써 놓으십시오. 열 변경에 따라 코드를보다 강력하게 만들고 와이어의 바이트 수를 줄입니다. duffymo 제안으로, 당신이 쿼리에서 수신 할 열을 밖으로 철자하는 것이 좋습니다, 당신이 가져 ResultSet의 메타 데이터를 사용할 수 있지만

+0

정확히 "와이어에 바이트의 수를 줄일 수"무엇을 의미합니까? – Gevorg

+1

테이블에 100 개의 열이 있고 SELECT *를 사용하면 필요한 수에 관계없이 모든 행에 대해 100 개의 모든 열이 다시 컴퓨터로 돌아옵니다. 해당 테이블에 백만 개의 행이 있으면 SELECT *를 사용하여 필요에 따라 모든 것을 다시 가져옵니다. 클라이언트에서 필터링하는 것은 비효율적입니다. SQL에서 필터링을 수행하십시오 - 그것이 잘되고있는 것 - 오직 필요한 것을 되돌릴 수 있습니다. – duffymo

+0

아, 그래! 초 동안 나는 그것의 column_name 대 레코드에 접근하는 것 사이에 차이가있을 수 있다고 생각했다. column_name ... lol – Gevorg

1

예, 당신은 좋겠 반환되는 필드를 제한하십시오. 이것은 SQL 문제이며 Java 문제는 아닙니다.

select this, that, theothercolumn from mytable; 

그런 다음 당신이 동적으로 제한하려면이 옵션을 사용할 수 있습니다 : 이런 식으로 뭔가에 조회를 변경

rs.getMetaData().getColumnCount()