第七章 数据库元数据(Database Metadata)

DatabaseMetadata 接口通过JDBC驱动程序的实现提供基础数据源的信息。它主要由应用程序服务器和工具来决定如何与给定的数据源交互。应用程序也可以使用databasemetadata方法来获取有关数据源的信息,但这是不特别的
DatabaseMetadata 接口包括超过150个方法,可以根据他们提供的信息的类型分类:

  • 关于数据源的一般信息
  • 数据源是否支持给定的特性或功能
  • 数据源的限制
  • 数据源包含哪些SQL对象和这些对象的属性
  • 由数据源提供的事务支持

DatabaseMetadata 接口还包含超过40个字段,这是用来作为各种 databasemetadata 方法返回值

本章提出的databasemetadata接口的概述,举例说明元数据方法的分类,并介绍了一些新的方法。然而,对于一个全面的列表,读者应该参考JDBC API规范

Note – 注–JDBC定义结果集元数据接口,会在第十五章 "结果集" 进行讨论

7.1 创建一个databasemetadata对象

一个 databasemetadata 对象由连接方法 getmetadata 创建。一旦创建,它就可以被用来动态地发现底层数据源的信息。代码示例7-1创建一个databasemetadata对象。

DatabaseMetaData dbmd = con.getMetadata();
int maxLen = dbmd.getMaxTableNameLength();

7.2 通用信息检索

一些databasemetadata方法用于动态地发现数据源的一般信息,以及一些关于它的实现细节。这一类中的这方法是

  • getURL
  • getUserName
  • getDatabaseProductVersion, getDriverMajorVersion and getDriverMinorVersion
  • getSchemaTerm, getCatalogTerm and getProcedureTerm
  • nullsAreSortedHigh and nullsAreSortedLow
  • usesLocalFiles and usesLocalFilePerTable
  • getSQLKeywords

7.3 确定功能支持

一大组 databasemetadata 方法可以用来确定一个特定的功能或功能集是由 Driver 或底层数据源支持。除此之外,一些方法描述了提供何种级别的支持。对单个特征支持的描述 的一些方法是:

  • supportsaltertablewithdropcolumn
  • supportsBatchUpdates
  • supportsPositionedDelete
  • supportsFullOuterJoins
  • supportsStoredProcedures
  • supportsMixedCaseQuotedIdentifiers

描述功能支持级别的方法包括:

  • supportsANSI92EntryLevelSQL
  • supportsCoreSQLGrammar

7.4 数据源的限制

这一组方法提供了给定数据源所施加的限制。这一类中的一些方法是:

  • getMaxRowSize
  • getMaxStatementLength
  • getMaxTablesInSelect
  • getMaxConnections
  • getMaxCharLiteralLength
  • getMaxColumnsInTable

这个组中的方法返回一个int类型的值,表示没有限制或限制是未知的

7.5 SQL对象及其属性

一些databasemetadata方法提供SQL对象的信息对于一个给定的数据源,还包括确定这些对象属性的方法,这一类的例子是:

  • getSchemas
  • getCatalogs
  • getTables
  • getPrimaryKeys
  • getProcedures
  • getProcedureColumns
  • getUDTs
  • getFunctions
  • getFunctionColumns

这是从一个databasemetadata方法返回ResultSet对象具有敏感性type_forward_only和并发concur_read_only。resultset.getholdability来确定返回的ResultSet对象的保持能力作为默认的保持能力是实现定义

附加的列以外的列定义为通过对给定的方法返回的ResultSet对象可以通过JDBC驱动程序厂商定义的,必须由他们的列标签的访问。这使得未来的JDBC规范能够如果需要现有的databasemetadata方法没有显著影响现有的应用程序添加额外的列

7.6 事务支持

一小部分方法提供有关数据源支持的事务语义的信息。这一类的例子包括

  • supportsMultipleTransactions
  • getDefaultTransactionIsolation

7.7 新的方法

JDBC 4.2 API提供了以下新的databasemetadata方法:

  • supportsRefCursors
  • getMaxLogicalLobSize

7.8 已更新的方法

JDBC 4.2 API修改现有的databasemetadata方法的定义:

  • getIndexInfo
    以前返回CARDINALITY 和 PAGES 列现在返回一个long 类型的值

JDBC 4.2 API规范包括这些方法的更新定义。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本节介绍Statement接口及其子类PreparedStatement和CallableStatement。 它...
    zlb阅读 4,892评论 0 0
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,955评论 18 399
  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 11,157评论 0 4
  • 偷懒方式 可以使用编辑器中自带的sass插件来进行直接开发 推荐阅读:Sass入门 其他方式 1.安装Ruby ...
    0安阅读 1,254评论 0 0
  • 什么是未来?什么是爱?什么是梦想?什么是彼岸? 这一切,都不是我想要的! 睁开眼,宝宝睡得正香,小小的,肉嘟嘟的,...
    天黎琉璃阅读 3,375评论 9 14