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

Java로 MySQL 데이터베이스 구조 정보를 조회하는 방법

MySQL 데이터베이스의 구조 정보를 조회하려면 JDBC에서 제공하는 DatabaseMetaData 클래스를 사용하면 됩니다. 이 클래스는 연결된 데이터베이스에 대한 테이블 목록, 컬럼 정보, 인덱스 등 다양한 메타데이터를 프로그래밍 방식으로 가져올 수 있게 해줍니다.

이번 예제에서는 getMetaData() 메서드를 활용해 Java로 "web" 데이터베이스에 존재하는 모든 테이블 이름을 화면에 출력해 보겠습니다.

예제 코드

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

public class getDatabaseInformationDemo {
    public static void main(String[] args) {
        Connection con = null;
        try {
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/web?useSSL=false", "root", "123456");
            DatabaseMetaData information = (DatabaseMetaData) con.getMetaData();
            String allTableName[] = {
                "TABLE"
            };
            ResultSet r = information.getTables(null, null, null, allTableName);
            while (r.next()) {
                System.out.println(r.getString(3));
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
}

코드 설명

DriverManager.getConnection()을 통해 MySQL 서버에 접속한 뒤, Connection 객체의 getMetaData() 메서드를 호출하여 DatabaseMetaData 객체를 얻습니다. 그다음 getTables() 메서드에 테이블 유형으로 "TABLE"만 지정하면, 해당 데이터베이스의 일반 테이블 목록이 ResultSet 형태로 반환됩니다.

여기서 주의할 점은 결과의 세 번째 컬럼(인덱스 3)이 테이블 이름을 의미한다는 것입니다. 따라서 r.getString(3)을 호출하면 각 테이블의 이름을 순차적으로 얻을 수 있습니다.

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

실행 결과

demotable211
demotable212
demotable213
demotable214
demotable215
demotable216
name
select

이처럼 DatabaseMetaData 클래스를 활용하면 SQL 쿼리를 직접 작성하지 않고도 Java 코드만으로 MySQL 데이터베이스의 구조 정보를 손쉽게 확인할 수 있습니다. 필요에 따라 특정 스키마나 테이블 이름 패턴을 조건으로 지정할 수도 있어, 데이터베이스 관리 도구나 동적 쿼리 생성 기능을 개발할 때 매우 유용하게 사용됩니다.