MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

JavaでMySQLデータベース内のすべてのテーブル一覧を取得・表示する方法

この記事では、Javaを使ってMySQLデータベース内のすべてのテーブルを表示する方法を解説します。テーブルの一覧を取得するには、JDBCのDatabaseMetaDataインターフェースを利用するのが一般的です。また、MySQL側ではSHOW TABLESコマンドでも同じ結果が得られるため、両方の方法を紹介し、最後に結果を照合して確認します。

前提条件

ここでは、サンプルデータベースとして「test」を使用します。JavaからMySQLに接続するために、MySQL Connector/J(JDBCドライバー)が必要です。

Javaでデータベース接続を確立する

まず、Class.forName()でJDBCドライバーを読み込み、DriverManager.getConnection()を使ってMySQLとの接続を確立します。以下のコードでは、ホスト「localhost」の「test」データベースに接続しています。

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.DatabaseMetaData;

public class GetAllTables {
    public static void main(String[] args) throws SQLException {
        Connection conn = null;
        try {
            try {
                Class.forName("com.mysql.jdbc.Driver");
            } catch (Exception e) {
                System.out.println(e);
            }
            conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/test", "Manish", "123456");
            System.out.println("接続が正常に確立されました:");
        } catch (Exception e) {
            System.out.println(e);
        }
        ResultSet rs = null;
        DatabaseMetaData meta = (DatabaseMetaData) conn.getMetaData();
        rs = meta.getTables(null, null, null, new String[] {
            "TABLE"
        });
        int count = 0;
        System.out.println("testデータベース内のすべてのテーブル名:");
        while (rs.next()) {
            String tblName = rs.getString("TABLE_NAME");
            System.out.println(tblName);
            count++;
        }
        System.out.println(count + " 行が見つかりました ");
    }
}

コードのポイント

  • getMetaData()メソッド: 接続オブジェクトからデータベースのメタ情報(構造情報)を取得します。
  • getTables()メソッド: 第1引数にカタログ名、第2引数にスキーマパターン、第3引数にテーブル名パターンを指定できます。すべてnullにすると制限なしで全件を取得し、第4引数で種類を「TABLE」に限定しています。
  • TABLE_NAMEカラム: 結果セットからはrs.getString("TABLE_NAME")でテーブル名を1件ずつ取り出せます。
  • SSL警告について: 実行時にSSL接続に関する警告が表示される場合は、接続URLに?useSSL=falseを追加するか、信頼できるトラストストアを設定することで対応できます。

実行結果の出力例

上記のプログラムを実行すると、「test」データベース内のすべてのテーブル名が以下のように出力されます(一部抜粋)。

Wed Dec 12 14:55:28 IST 2018 WARN: Establishing SSL connection without server's identity verification is not recommended...
接続が正常に確立されました:
testデータベース内のすべてのテーブル名:
add30minutesdemo
addcolumn
addoneday
agecalculatesdemo
aliasdemo
allcharacterbeforespace
allownulldemo
appendingdatademo
autoincrementdemo
betweendatedemo
...
student
studentdemo
studentmodifytabledemo
studenttable
subtract3hours
...
zipcodepadwithzerodemo

103 Rows in set

この例では、合計103件のテーブルが検出されました。

MySQLのSHOW TABLESコマンドで確認する

Javaプログラムの結果が正しいかどうかを確認するには、MySQLクライアントでSHOW TABLESコマンドを実行します。

mysql> use test;
Database changed
mysql> show tables;

実行結果は次のようになります(一部抜粋)。

+------------------------------+
| Tables_in_test               |
+------------------------------+
| add30minutesdemo             |
| addcolumn                    |
| addoneday                    |
| agecalculatesdemo            |
| aliasdemo                    |
| allcharacterbeforespace      |
| allownulldemo                |
| appendingdatademo            |
| autoincrementdemo            |
| betweendatedemo              |
| bigintandintdemo             |
| bigintdemo                   |
| bookdatedemo                 |
| changecolumnpositiondemo     |
| changeenginetabledemo        |
| charsetdemo                  |
| concatenatetwocolumnsdemo    |
| constraintdemo               |
| cumulativesumdemo            |
| currentdatetimedemo          |
| customers                    |
| ...                          |
| zipcodepadwithzerodemo       |
+------------------------------+
103 rows in set (0.01 sec)

まとめ

上記の出力結果を比較すると、JavaのDatabaseMetaData.getTables()による取得結果と、MySQLのSHOW TABLESコマンドによる結果が完全に一致していることがわかります。このように、Javaアプリケーションからでもデータベース内のテーブル構造を簡単に把握でき、動的な処理や管理ツールの開発などに活用できます。

  1. MySQLでデータベース内のテーブル数を表示するクエリの書き方

    INFORMATION_SCHEMA.TABLESを使ってテーブル数を取得するここでは例として、「WEB」というデータベースを使用しているものとします。このデータベース内に存在するテーブルの総数を調べたい場合、MySQLではINFORMATION_SCHEMA.TABLESを利用するのが便利です。INFORMATION_SCHEMAは、MySQLサーバーが管理しているメタデータ(データベース名、テーブル名、カラム情報など)を格納する仮想データベースであり、これを参照することでスキーマに関する情報をSQLで簡単に取得できます。テーブル数を表示するクエリ「WEB」データベース内のテーブル数を表示す

  2. Javaを使用してMySQLテーブルの値を表示する方法

    MySQLデータベースのテーブル値をJavaで表示するには、ResultSetの概念を利用します。データベースへの接続には、MySQL JDBCドライバーを使用します。テーブルの作成まず、サンプル用のテーブルを作成しましょう。mysql> create table demo87    -> (    -> name varchar(20),    -> age int    -> )