Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

Java JDBC로 MySQL 테이블의 열 개수 구하는 방법

MySQL 테이블의 열(컬럼) 개수를 자바에서 확인하려면 ResultSetMetaData를 활용하면 됩니다. ResultSetMetaData는 결과 집합(Result Set)에 대한 메타데이터, 즉 열의 개수, 이름, 데이터 타입 등의 정보를 제공하는 인터페이스입니다.

1. 테스트용 테이블 생성

먼저 MySQL에서 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable
-> (
-> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentFirstName varchar(20),
-> StudentLastName varchar(20)
-> );
Query OK, 0 rows affected (0.58 sec)

위 테이블은 총 3개의 열(StudentId, StudentFirstName, StudentLastName)로 구성되어 있습니다.

2. 자바 코드 예제

JDBC를 통해 데이터베이스에 연결한 뒤, SELECT 쿼리를 실행하고 ResultSetMetaData에서 getColumnCount() 메서드를 호출하면 열 개수를 얻을 수 있습니다.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import com.mysql.jdbc.ResultSetMetaData;

public class ResultSetDemo {
public static void main(String[] args) {
Connection con = null;
PreparedStatement ps = null;
Statement st = null;
ResultSet rs = null;
try {
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/web?useSSL=false", "root", "123456");
String query = "select StudentId,StudentFirstName,StudentLastName from DemoTable";
st = con.createStatement();
rs = st.executeQuery(query);
ResultSetMetaData rsmd = (ResultSetMetaData) rs.getMetaData();
int numberOfColumn = rsmd.getColumnCount();
System.out.println(" Number Of Columns: " + numberOfColumn);
System.out.println("All Details Of Columns:");
for (int i = 1; i <= numberOfColumn; i++) {
String columnName = rsmd.getColumnName(i);
String dataTypeOfColumn = rsmd.getColumnTypeName(i);
System.out.println(columnName + " has data type " + dataTypeOfColumn);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

3. 실행 결과

위 코드를 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.

Number Of Columns: 3
All Details Of Columns:
StudentId has data type INT
StudentFirstName has data type VARCHAR
StudentLastName has data type VARCHAR

4. 핵심 포인트 정리

  • rs.getMetaData(): ResultSet 객체에서 메타데이터 정보를 가져옵니다.
  • getColumnCount(): 결과 집합에 포함된 열의 총 개수를 반환합니다.
  • getColumnName(i): 인덱스 위치의 열 이름을 반환합니다. 인덱스는 0이 아닌 1부터 시작합니다.
  • getColumnTypeName(i): 해당 열의 데이터 타입(INT, VARCHAR 등)을 문자열로 반환합니다.

이 방법을 응용하면 테이블 구조를 동적으로 분석하거나, 범용적인 조회 화면을 만들 때 유용하게 활용할 수 있습니다.