1

我正在使用 MySql、JDBC、Java 来编写我的代码。我无法理解 API 中的某些术语是什么意思。它阻止我做下面的工作 - 制作检查特定数据库是否存在的代码,然后检查该数据库中是否存在特定表数据库,然后检查该表中的特定列。

每个表描述都有以下列:

TABLE_CAT String => table catalog (may be null)
TABLE_SCHEM String => table schema (may be null)
TABLE_NAME String => table name
TABLE_TYPE String => table type. Typical types are "TABLE", "VIEW", "SYSTEM     TABLE",     "GLOBAL TEMPORARY", "LOCAL TEMPORARY", "ALIAS", "SYNONYM".
REMARKS String => explanatory comment on the table
TYPE_CAT String => the types catalog (may be null)
TYPE_SCHEM String => the types schema (may be null)
TYPE_NAME String => type name (may be null)
SELF_REFERENCING_COL_NAME String => name of the designated "identifier" column of a typed table (may be null)
REF_GENERATION String => specifies how values in SELF_REFERENCING_COL_NAME are  created.      
Values are "SYSTEM", "USER", "DERIVED". (may be null)

什么是表目录,什么是表模式,SELF_REFERENCING_COL_NAME 等?

4

1 回答 1

1

DatabaseMetadata的Connector/J实现而言,返回数据库名称(如在CREATE DATABASE中);是和不返回。TABLE_CATTABLE_SCHEMnullSELF_REFERENCING_COL_NAME

这是特定于数据库和驱动程序的。例如,Oracle ojdbc 驱动程序将返回nullforTABLE_CAT和对象所有者为TABLE_SCHEM.


对于您的特定任务(MySQL + 连接器/J):

  1. 要检查特定数据库是否存在 →getCatalogs()用于获取 a ResultSet,迭代其行并检索TABLE_CAT列,您的数据库应匹配其值之一。
  2. 要检查数据库是否包含特定表→getTables(databaseName, null, tableName, new String[]{"TABLE"})应该返回一个非空的ResultSet
  3. 要检查表是否包含特定列→getColumns(databaseName, null, tableName, columnName)应该返回一个非空的ResultSet
于 2012-08-09T03:48:07.243 回答