我正在使用MySql,JDBC,Java来制作我的代码。我无法理解API中的某些术语是什么意思。它阻止我做以下工作 - 要生成检查特定数据库是否存在的代码,请检查该数据库中是否存在特定的表DB,然后检查该表中的特定列。
每个表格描述都包含以下列:
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等?
答案 0 :(得分:1)
就Connector/J的DatabaseMetadata实施而言,TABLE_CAT
返回数据库名称(如CREATE DATABASE中所示); <{1}}为TABLE_SCHEM
且未返回null
。
这是特定于数据库和驱动程序的。例如,Oracle ojdbc drivers将返回SELF_REFERENCING_COL_NAME
null
和TABLE_CAT
的对象所有者。
针对您的特定任务(MySQL + Connector / J):
TABLE_SCHEM
获取getCatalogs()
,迭代其行并检索ResultSet
列,您的数据库应与其中一个值匹配。TABLE_CAT
应返回非空getTables(databaseName, null, tableName, new String[]{"TABLE"})
。ResultSet
应返回非空getColumns(databaseName, null, tableName, columnName)
。答案 1 :(得分:0)