【发布时间】:2015-06-17 14:42:20
【问题描述】:
我正在使用getExportedKeys JDBC 方法。它在 Oracle 中运行良好,但在 MySQL 中它返回空集。我尝试使用useInformationSchema=true,但它仍然返回空集。
让我知道getTables,getExportedKeys,getImportedKeys 是否适用于 MySQL、sql、DB2、Postgres 数据库。
【问题讨论】:
我正在使用getExportedKeys JDBC 方法。它在 Oracle 中运行良好,但在 MySQL 中它返回空集。我尝试使用useInformationSchema=true,但它仍然返回空集。
让我知道getTables,getExportedKeys,getImportedKeys 是否适用于 MySQL、sql、DB2、Postgres 数据库。
【问题讨论】:
这取决于您使用的驱动程序和数据源。 一些 DataSorce 实现提供了启用禁用 DatabaseMetadata 以获得更好性能的选项。
例如:请参阅以下链接中的信息 https://docs.oracle.com/cd/E21764_01/web.1111/e13753/db2.htm#JDBCD153
--->>目录选项
确定当应用程序调用 DatabaseMetaData 方法时,结果集中包含哪种类型的元数据信息。
有效值:0 | 2 | 6,默认值为 2。
如果为 0,则结果集不包含同义词。
如果为 2,则结果集包含从以下 DatabaseMetaData 方法返回的同义词:getColumns()、getExportedKeys()、getFunctionColumns()、getFunctions()、getImportedKeys()、getIndexInfo()、getPrimaryKeys()、getProcedureColumns() , 和 getProcedures()。
如果为 6,则向驱动程序提供提示,以使用 ResultSetMetaData 对象模拟 getColumns() 调用,而不是查询数据库目录以获取列信息。结果集包含同义词。使用仿真可以提高性能,因为由仿真制定的 SQL 语句没有使用 getColumns() 制定的 SQL 语句复杂。 getColumns() 的参数必须计算为单个表。如果不是,例如,由于通配符或空值,驱动程序将恢复为 getColumns() 调用的默认行为。
【讨论】: