1 Mart 2019 Cuma

JDBC DatabaseMetaData Arayüzü

Giriş
Şu satırı dahil ederiz
import java.sql.DatabaseMetaData;
Yaşam Döngüsü
DatabaseMetaData nesnesi kendisini yaratan Connection nesnesi hayatta olduğu müddetçe kullanılabilir.

constructor
Şöyle yaparız.
Connection con = ...;
DatabaseMetaData md = con.getMetaData();
getCatalogs metodu
Şöyle yaparız.
ResultSet rs =  dm.getCatalogs();
while (rs.next()){
  System.out.println("\tcatalog: "+ rs.getString(1));
} 
rs.close();
SQL Server şunu döner
catalog: master
catalog: msdb
catalog: pubs
catalog: tempdb
getColumns metodu
Örnek
Şöyle yaparız
void readColumns(String tableName, DatabaseMetaData databaseMetaData) { try (ResultSet resultSet = databaseMetaData.getColumns(null, null, tableName, null)) { while (resultSet.next()) { String columnTypeName = resultSet.getString("TYPE_NAME"); String columnName = resultSet.getString("COLUMN_NAME"); String defaultValue = resultSet.getString("COLUMN_DEF"); ... } } catch (SQLException e) { ... } }
getDatabaseProductName metodu
Şöyle yaparız.
databaseMetaData.getDatabaseProductName();
Döndürülen String'den veri tabanı tipini belirlemek için Hibernate şöyle yapıyor. Bazı String'ler şöyle
H2
MySQL
PostgreSQL
Microsoft SQL Server
Oracle
getDatabaseProductVersion metodu
Şöyle yaparız.
databaseMetaData.getDatabaseProductVersion();
SQL Server şunu döner
Microsoft SQL Server  2000 - 8.00.384 (Intel X86)
May 23 2001 00:02:52
Copyright (c) 1988-2000 Microsoft Corporation
Desktop Engine on Windows NT 5.1 (Build 2600: )
getDriverMajorVersion metodu
Şöyle yaparız
databaseMetaData.getDriverMajorVersion();
getDriverMinorVersion metodu
Şöyle yaparız
databaseMetaData.getDriverMinorVersion();
getDriverName metodu
Şöyle yaparız.
conn.getMetaData().getDriverName(); // Oracle JDBC driver döner
SQL Server şunu döner
SQLServer
getDriverVersion metodu
Şöyle yaparız
mddatabaseMetaDatagetDriverVersion();
SQL Server şunu döner
2.2.0022
getImportedKeys metodu
Şöyle yaparız.
String table = ...;
ResultSet rs = databaseMetaData.getImportedKeys(
                      con.getCatalog(),
                      "TEST", //schema
                      table   //table
                    );
getPrimaryKeys metodu
Şöyle yaparız.
String tableName = ...;
ResultSet rs = databaseMetaDatagetPrimaryKeys(null, null, tableName);
Örnek
Şöyle yaparız
DataSource dataSource = ...
try (Connection connection = dataSource.getConnection();) {
  DatabaseMetaData databaseMetaData = connection.getMetaData();
  Set<String> pkColumns = readPrimaryKeys(tableName, databaseMetaData);
   ..
}

Set<String> readPrimaryKeys(String tableName, DatabaseMetaData databaseMetaData) {
  Set<String> pkColumns = new HashSet<>();
  try (ResultSet resultSet = databaseMetaData.getPrimaryKeys(null, null, tableName)) {
    while (resultSet.next()) {
      String columnName = resultSet.getString("COLUMN_NAME");
      pkColumns.add(columnName);
    }
  } catch (SQLException e) {
    ...
  }
  return pkColumns;
}
getProcedureColumns metodu
Veritabanındaki Stored Procedure'lara erişmek için kullanılır.

getTables metodu - catalog + schemaPattern + tableNamePattern + types[]
getTables metodu yazısına taşıdım

getUrl metodu
Şöyle yaparız.
String originalURL = databaseMetaData.getURL();


Hiç yorum yok:

Yorum Gönder