29 Ağustos 2023 Salı

JDBC DatabaseMetaData.getTables metodu

Giriş
Not : Bu metod çok iyi çalışmıyor. Farklı veri tabanları için farklı yöntemler kullanmak gerekir. Bir makale burada
İmzası şöyle
public ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types) throws SQLException
types için açıklama şöyle
Typical types are "TABLE", "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY", "LOCAL TEMPORARY", "ALIAS", "SYNONYM".
Döndürülen sütunlar şöyle
TABLE_CAT : Catalog of the table.
TABLE_SCHEM : Catalog of the schema.
TABLE_NAME : Name of the table.
TABLE_TYPE : Type of the table. (table, view, system table, global table, alias, synonym etc..)
REMARKS : Comments on the column.
TYPE_SCHEM : Schema of the table.
TYPE_NAME : Name of the type.
SELF_REFERENCING_COL_NAME : Name of the designated column of the table.
REF_GENERATION : Either SYSTEM or, USER or, DERIVED.
Örnek - Kendi Schemam'daki Tüm Tablolar
Şöyle yaparız. Burada catalog ve schema ismi connection nesnesine göre veriliyor. Tablo ismi belirtilmiyor ama Types olarak TABLE belirtilmiş
try(ResultSet rs = conn.getMetaData().getTables(conn.getCatalog(), conn.getSchema(), null, new String[] {"TABLE"})) { ... }
Örnek - Veri tabanındaki Tüm Tablolar Yani Database Discovery
Şöyle yaparız. Burada catalog ve schema ve tablaneNamePattern parametreleri belirtilmediği için tüm schemalarındaki tüm tabloları buluyor. Tabloları buluyor çünkü Types olarak TABLE belirtilmiş
try(ResultSet rs = conn.getMetaData().getTables(null,null,null,new String[] {"TABLE"})) { while (rs.next()) { System.out.println(rs.getString("TABLE_SCHEM") + "." + rs.getString("TABLE_NAME")); } } // Output app96.t1 app96.t2 public.administration$account public.appmodule$uploadedfile public.audittrail$audittrailsuperclass

Hiç yorum yok:

Yorum Gönder