首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在编写JDBC时区分“TABLE_CAT”和“TABLE_CATALOG”

问如何在编写JDBC时区分“TABLE_CAT”和“TABLE_CATALOG”
EN

Stack Overflow用户
提问于 2022-11-25 01:11:31
回答 1查看 24关注 0票数 0

在编写JDBC代码以适应DBvaver软件时,我不知道将数据库名称传递给谁。

例如,在getTables()函数中,返回的结果集具有以下参数:

代码语言:javascript
复制
ResultSet getTables(String catalog,
                  String schemaPattern,
                  String tableNamePattern,
                  String[] types)
                    throws SQLException
Retrieves a description of the tables available in the given catalog. Only table descriptions matching the catalog, schema, table name and type criteria are returned. They are ordered by TABLE_TYPE, TABLE_CAT, TABLE_SCHEM and TABLE_NAME.
Each table description has the following columns:

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)
Note: Some databases may not return information for all tables.

但是在getSchemas()函数中,返回的结果集具有以下参数:

代码语言:javascript
复制
ResultSet getSchemas()
                     throws SQLException
Retrieves the schema names available in this database. The results are ordered by TABLE_CATALOG and TABLE_SCHEM.
The schema columns are:

TABLE_SCHEM String => schema name
TABLE_CATALOG String => catalog name (may be null)

我想知道TABLE_CAT在getTables()中和TABLE_CATALOG中在getSchemas()中的区别,以及应该给予它们什么值。数据库名或表名。

EN

回答 1

Stack Overflow用户

发布于 2022-11-25 09:17:45

TABLE_CAT和TABLE_CATALOG都引用相同的概念,即目录。据我所知,命名中的不一致性只是从ODBC规范和SQL标准模式书中(也)如何命名这些列派生出来的。目录的确切含义因数据库系统而异,有些数据库系统甚至没有目录。

目录不是表,而是表的集合(有时是模式的集合,其中模式是表的集合),这些术语的含义也可能因数据库系统不同而有所不同。

默认情况下,对于MySQL连接器/J,虽然有一个配置选项来将数据库映射到模式,但目录表示一个数据库。

还请参阅databaseTerm连接器/J8文档的6.3.2连接一节中配置属性MySQL的文档:

MySQL使用"schema“一词作为”数据库“一词的同义词,而Connector/J在历史上使用JDBC术语"catalog”作为“数据库”的同义词。此属性为Connector/J设置,其中的JDBC术语"catalog“和"schema”在应用程序中用于引用数据库。该属性接受两个值" catalog“或"SCHEMA”之一,并使用它来确定(1)可以使用哪些连接方法来设置/获取当前数据库(例如'setCatalog()‘或'setSchema()'?),(2)在各种'DatabaseMetaData’方法中可以使用哪些参数来筛选结果(例如‘getColumns()’的目录或'schemaPattern‘参数?);(3) 'DatabaseMetaData’方法返回的结果集中的哪些字段包含数据库标识信息(即,由‘TABLE_CAT()’返回的结果集中的‘getTables’或'TABLE_SCHEM‘字段)。 如果"databaseTerm=CATALOG",搜索的'schemaPattern‘被忽略,模式方法的调用(如'setSchema()’或get ' schema ()')变成无操作,反之亦然。

默认情况是databaseTerm=CATALOG。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74567495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档