なんでこんなことをやりだしたか

いくらお手軽とはいえ、なぜいきなりSQLite3で遊んでいるかというと・・・

  • 最近、JDBCでテーブルアクセスするプログラムを書いた
  • Javadocをぼけぇと見ているとDatabaseMetaDataというのを発見。何が出来るのかとぐぐったらテーブル名とかテーブルカラム名とかを取得できることを今更ながらに知った。
  • いろんなスキーマに定義しているテーブル情報を整理したくてツールを作ることを思いつく

ということで、ちゃっちゃと遊べるSQLite3に登場願ったわけです。

で、本論。テーブル名の取得。↓の記事で作ったテーブルPEOPLEが出来ているかどうか確認する。

package miyohide;

import java.sql.*;

public class JdbcAccess {
  public static void main(String[] args) throws Exception {
    Class.forName("org.sqlite.JDBC");
    Connection conn = null;
    try {
      conn = DriverManager.getConnection("jdbc:sqlite:test.db");
      //peopleAdd(conn);
      getTableInfo(conn);
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        conn.close();
    }
  }

  public static void getTableInfo(Connection conn) throws SQLException {
      ResultSet rs = null;
      try {
          DatabaseMetaData dmd = conn.getMetaData();
          rs = dmd.getTables(null, null, "%", new String[]{"TABLE"});
          while (rs.next()) {
              String name = rs.getString("TABLE_NAME");
              System.out.println("table name = " + name);
          }
      } catch (SQLException e) {
              e.printStackTrace();
      } finally {
          rs.close();
      }

  }

}

で、実行してみる。

table name = PEOPLE

おぉぅ!