gpt4 book ai didi

java - 了解 DatabaseMetaData 的方法

转载 作者:行者123 更新时间:2023-11-29 00:42:28 24 4
gpt4 key购买 nike

我正在使用 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 等?

最佳答案

至于Connector/J实现DatabaseMetadata关注 TABLE_CAT 返回数据库名称(如 CREATE DATABASE ); TABLE_SCHEMnull 且未返回 SELF_REFERENCING_COL_NAME

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


对于您的特定任务(MySQL + Connector/J):

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

关于java - 了解 DatabaseMetaData 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11730372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com