JDBC : Mengambil Daftar Table dari Suatu Database

posted Sep 18, 2011, 8:33 PM by Editor KursusInternet   [ updated Sep 19, 2011, 6:03 PM ]

Pendahuluan

Pada contoh di artikel sebelumnya, kita telah dapat mengambil daftar kolom / field yang ada pada suatu table. Bagaimana dengan pengambilan daftar table sendiri dari suatu database ?

Untuk melakukan hal tersebut, kita bisa menggunakan getTables() dari instance DatabaseMetaData.  Sedangkan inisialisasi dari objek / instance DatabaseMetaData sendiri menggunakan method getMetaData() dari class Connection.

Daftar argumen yang digunakan method getTables() sesuai dengan halaman dokumentasi untuk class tersebut adalah sebagai berikut :
ResultSet getTables(String catalog,
                    String schemaPattern,
                    String tableNamePattern,
                    String[] types)
                    throws SQLException
dimana :
  • catalog : nama database yang ingin kita gunakan.
  • schemaPattern : pola nama schema yang ingin digunakan. Bisa menggunakan nilai null (tidak spesifik), dan juga dapat menggunkan wildcard "%".
  • tableNamePattern : pola nama table. Bisa menggunakan nilai null (tidak spesifik), dan juga dapat menggunkan wildcard "%".
  • types : daftar tipe table yang dalam array, merupakan bagian dari nilai "TABLE", "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY", "LOCAL TEMPORARY", "ALIAS", "SYNONYM".

Kolom-kolom resultset yang dikembalikan dan penjelasannya adalah sebagai berikut :
  1. TABLE_CAT  (String) : database / catalog dari table tersebut berada (ada kemungkinan berisi nilai null).
  2. TABLE_SCHEM (String) : schema dari table tersebut (ada kemungkinan berisi nilai null).
  3. TABLE_NAME (String) : nama table.
  4. TABLE_TYPE (String) : berisi tipe dari table.
  5. REMARKS (String) : berisi deskripsi tambahan dari table tersebut.
  6. TYPE_CAT (String) : tipe dari database / catalog (ada kemungkinan berisi nilai null).
  7. TYPE_SCHEM (String) : tipe dari schema (ada kemungkinan berisi nilai null).
  8. TYPE_NAME (String) : berisi nama tipe type name (ada kemungkinan berisi nilai null).
  9. SELF_REFERENCING_COL_NAME (String) :  nama dari kolom "identifier" (ada kemungkinan berisi nilai null).
  10. REF_GENERATION (String) : menspesifikasikan bagaiman nilai pada kolom  SELF_REFERENCING_COL_NAME terbentuk. Daftar nilai yang memungkinkan adalah null, "SYSTEM", "USER", "DERIVED".

Contoh Kode Java

Berikut adalah contoh potongan lengkap kode Java untuk mengambil daftar table yang namanya berawalan "ms_" dari database PHI-Minimart.

package com.kursus.internet.database;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

public class AmbilDaftarTable {
  public static void main(String[] args) {
    Connection koneksi = null;
    DatabaseMetaData objmd = null;
    ResultSet rs = null;

    String namaClassDriver = "net.sourceforge.jtds.jdbc.Driver";
    String urlKoneksi = "jdbc:jtds:sqlserver://localhost/phi_minimart";

    Properties connectionProps = new Properties();
    connectionProps.put("user""kursusinternet");
    connectionProps.put("password""kursusinternet");

    try {
      Class.forName(namaClassDriver);
      koneksi = DriverManager.getConnection(urlKoneksi, connectionProps);
      objmd = koneksi.getMetaData();
      String[] arrTypes = {"TABLE"};
      rs = objmd.getTables(null, null, "ms%", arrTypes);
      while(rs.next())
      {
        System.out.println(rs.getString("TABLE_NAME"));
      }

    catch (SQLException e) {
      e.printStackTrace();
    catch (ClassNotFoundException e) {
      e.printStackTrace();
    }
    finally {
      try {
        if(rs != nullrs.close();
        if(koneksi != nullkoneksi.close();
      catch (SQLException e) {
        e.printStackTrace();
      }      
    }
  }
}

Hasil Eksekusi

ms_cabang
ms_harga_harian
ms_karyawan
ms_kategori
ms_kota
ms_produk
ms_propinsi


Sumber Referensi

Comments