DatabaseMetaData獲取數據庫信息

一、獲取數據庫表信息

 

getTables

ResultSet getTables(String catalog,
                    String schemaPattern,
                    String tableNamePattern,
                    String[] types)
                    throws SQLException
檢索可在給定類別中使用的表的描述。僅返回與類別、模式、表名稱和類型標準匹配的表描述。它們根據 TABLE_TYPE、TABLE_SCHEM 和 TABLE_NAME 進行排序。

每個表描述都有以下列:

  1. TABLE_CAT String => 表類別(可爲 null
  2. TABLE_SCHEM String => 表模式(可爲 null
  3. TABLE_NAME String => 表名稱
  4. TABLE_TYPE String => 表類型。典型的類型是 "TABLE"、"VIEW"、"SYSTEM TABLE"、"GLOBAL TEMPORARY"、"LOCAL TEMPORARY"、"ALIAS" 和 "SYNONYM"。
  5. REMARKS String => 表的解釋性註釋
  6. TYPE_CAT String => 類型的類別(可爲 null
  7. TYPE_SCHEM String => 類型模式(可爲 null
  8. TYPE_NAME String => 類型名稱(可爲 null
  9. SELF_REFERENCING_COL_NAME String => 有類型表的指定 "identifier" 列的名稱(可爲 null
  10. REF_GENERATION String => 指定在 SELF_REFERENCING_COL_NAME 中創建值的方式。這些值爲 "SYSTEM"、"USER" 和 "DERIVED"。(可能爲 null

注: 有些數據庫可能不返回用於所有表的信息。

參數:
catalog - 類別名稱,因爲存儲在數據庫中,所以它必須匹配類別名稱。該參數爲 "" 則檢索沒有類別的描述,爲 null 則表示該類別名稱不應用於縮小搜索範圍
schemaPattern - 模式名稱的模式,因爲存儲在數據庫中,所以它必須匹配模式名稱。該參數爲 "" 則檢索那些沒有模式的描述,爲 null 則表示該模式名稱不應用於縮小搜索範圍
tableNamePattern - 表名稱模式,因爲存儲在數據庫中,所以它必須匹配表名稱
types - 要包括的表類型組成的列表,null 表示返回所有類型
返回:
ResultSet - 每一行都是一個表描述
拋出:
SQLException - 如果發生數據庫訪問錯誤

二、獲取表中列信息

 

getColumns

ResultSet getColumns(String catalog,
                     String schemaPattern,
                     String tableNamePattern,
                     String columnNamePattern)
                     throws SQLException
檢索可在指定類別中使用的表列的描述。

僅返回與類別、模式、表和列名稱標準匹配的列描述。它們根據 TABLE_SCHEMTABLE_NAMEORDINAL_POSITION 進行排序。

每個列描述都有以下列:

  1. TABLE_CAT String => 表類別(可爲 null
  2. TABLE_SCHEM String => 表模式(可爲 null
  3. TABLE_NAME String => 表名稱
  4. COLUMN_NAME String => 列名稱
  5. DATA_TYPE int => 來自 java.sql.Types 的 SQL 類型
  6. TYPE_NAME String => 數據源依賴的類型名稱,對於 UDT,該類型名稱是完全限定的
  7. COLUMN_SIZE int => 列的大小。對於 char 或 date 類型,列的大小是最大字符數,對於 numeric 和 decimal 類型,列的大小就是精度。
  8. BUFFER_LENGTH 未被使用。
  9. DECIMAL_DIGITS int => 小數部分的位數
  10. NUM_PREC_RADIX int => 基數(通常爲 10 或 2)
  11. NULLABLE int => 是否允許使用 NULL。
    • columnNoNulls - 可能不允許使用 NULL
    • columnNullable - 明確允許使用 NULL
    • columnNullableUnknown - 不知道是否可使用 null
  12. REMARKS String => 描述列的註釋(可爲 null
  13. COLUMN_DEF String => 默認值(可爲 null
  14. SQL_DATA_TYPE int => 未使用
  15. SQL_DATETIME_SUB int => 未使用
  16. CHAR_OCTET_LENGTH int => 對於 char 類型,該長度是列中的最大字節數
  17. ORDINAL_POSITION int => 表中的列的索引(從 1 開始)
  18. IS_NULLABLE String => "NO" 表示明確不允許列使用 NULL 值,"YES" 表示可能允許列使用 NULL 值。空字符串表示沒人知道是否允許使用 null 值。
  19. SCOPE_CATLOG String => 表的類別,它是引用屬性的作用域(如果 DATA_TYPE 不是 REF,則爲 null
  20. SCOPE_SCHEMA String => 表的模式,它是引用屬性的作用域(如果 DATA_TYPE 不是 REF,則爲 null
  21. SCOPE_TABLE String => 表名稱,它是引用屬性的作用域(如果 DATA_TYPE 不是 REF,則爲 null
  22. SOURCE_DATA_TYPE short => 不同類型或用戶生成 Ref 類型、來自 java.sql.Types 的 SQL 類型的源類型(如果 DATA_TYPE 不是 DISTINCT 或用戶生成的 REF,則爲 null

參數:
catalog - 類別名稱,因爲存儲在數據庫中,所以它必須匹配類別名稱。該參數爲 "" 則檢索沒有類別的描述,爲 null 則表示該類別名稱不應用於縮小搜索範圍
schemaPattern - 模式名稱的模式,因爲存儲在數據庫中,所以它必須匹配模式名稱。該參數爲 "" 則檢索那些沒有模式的描述,爲 null 則表示該模式名稱不應用於縮小搜索範圍
tableNamePattern - 表名稱模式,因爲存儲在數據庫中,所以它必須匹配表名稱
columnNamePattern - 列名稱模式,因爲存儲在數據庫中,所以它必須匹配列名稱
返回:
ResultSet - 每一行都是一個列描述
拋出:
SQLException - 如果發生數據庫訪問錯誤
另請參見:
getSearchStringEscape()

 

三、表中主鍵信息

 

getPrimaryKeys

ResultSet getPrimaryKeys(String catalog,
                         String schema,
                         String table)
                         throws SQLException
檢索對給定表的主鍵列的描述。它們根據 COLUMN_NAME 進行排序。

每個主鍵列描述都有以下列:

  1. TABLE_CAT String => 表類別(可爲 null
  2. TABLE_SCHEM String => 表模式(可爲 null
  3. TABLE_NAME String => 表名稱
  4. COLUMN_NAME String => 列名稱
  5. KEY_SEQ short => 主鍵中的序列號
  6. PK_NAME String => 主鍵的名稱(可爲 null

參數:
catalog - 類別名稱,因爲存儲在數據庫中,所以它必須匹配類別名稱。該參數爲 "" 則檢索沒有類別的描述,爲 null 則表示該類別名稱不應用於縮小搜索範圍
schema - 模式名稱,因爲存儲在數據庫中,所以它必須匹配模式名稱。該參數爲 "" 則檢索那些沒有模式的描述,爲 null 則表示該模式名稱不應用於縮小搜索範圍
table - 表名稱,因爲存儲在數據庫中,所以它必須匹配表名稱
返回:
ResultSet - 每一行都是一個主鍵列描述
拋出:
SQLException - 如果發生數據庫訪問錯誤
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章