[java] JDBC ResultSet에서 열 수를 얻는 방법은 무엇입니까?

내가 사용하고 CsvJdbc을 을 CSV 파일에 액세스하기 위해 (이 CSV – 파일에 대한 JDBC 드라이버입니다). csv 파일에 몇 개의 열이 있는지 모르겠습니다. 열 수를 어떻게 얻을 수 있습니까? 이것에 대한 JDBC 기능이 있습니까? java.sql.ResultSet에서 이에 대한 메소드를 찾을 수 없습니다.

파일에 액세스하기 위해 CsvJdbc 웹 사이트 의 예제 와 유사한 코드를 사용합니다 .



답변

ResultSetMetaData 에서 열 번호를 가져올 수 있습니다 .

Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(query);
ResultSetMetaData rsmd = rs.getMetaData();

int columnsNumber = rsmd.getColumnCount();


답변

PreparedStatement ps=con.prepareStatement("select * from stud");

ResultSet rs=ps.executeQuery();

ResultSetMetaData rsmd=rs.getMetaData();

System.out.println("columns: "+rsmd.getColumnCount());  
System.out.println("Column Name of 1st column: "+rsmd.getColumnName(1));  
System.out.println("Column Type Name of 1st column: "+rsmd.getColumnTypeName(1)); 


답변

코드로 얻을 수 있는 결과 집합 수 (DB는 PostgreSQL로 사용됨) :

// PostgreSQL 용 드라이버로드
Class.forName ( "org.postgresql.Driver");

문자열 url = "jdbc : postgresql : // localhost / test";
속성 props = new Properties ();
props.setProperty ( "user", "mydbuser");
props.setProperty ( "password", "mydbpass");
연결 conn = DriverManager.getConnection (url, props);

// 문 만들기
문 stat = conn.createStatement ();

// 결과 세트 얻기
ResultSet rs = stat.executeQuery ( "SELECT c1, c2, c3, c4, c5 FROM MY_TABLE");

// 결과 세트에서 메타 데이터 제공
ResultSetMetaData rsmd = rs.getMetaData ();

// 메타 데이터 개체의 열 개수
int numOfCols = rsmd.getColumnCount ();

그러나 열에 대한 더 많은 메타 정보를 얻을 수 있습니다.

for(int i = 1; i <= numOfCols; i++)
{
    System.out.println(rsmd.getColumnName(i));
}

그리고 최소한 테이블에 대한 정보뿐만 아니라 DB에 대한 정보도 여기여기에서 찾을 수 있습니다 .


답변

연결을 설정하고 쿼리를 실행 한 후 다음을 시도하십시오.

 ResultSet resultSet;
 int columnCount = resultSet.getMetaData().getColumnCount();
 System.out.println("column count : "+columnCount);


답변

이것은 데이터를 열로 인쇄하고 마지막 열에 도달하면 새 줄에옵니다.

ResultSetMetaData resultSetMetaData = res.getMetaData();
int columnCount = resultSetMetaData.getColumnCount();
for(int i =1; i<=columnCount; i++){
                if(!(i==columnCount)){

                    System.out.print(res.getString(i)+"\t");
                }
                else{
                    System.out.println(res.getString(i));
                }

            }


답변