gpt4 book ai didi

java - JDBC获取列注释的方法

转载 作者:搜寻专家 更新时间:2023-10-30 21:49:51 27 4
gpt4 key购买 nike

我想使用 JDBC 元数据获取列注释,但每次它返回 null 时,我都用 Oracle 和 SqlServer 进行了测试,这两种情况都返回 Null。

DatabaseMetaData dmt = con.getMetaData();    
colRs = dmt.getColumns(null, "dbo", 'Student', null);
while (colRs.next()) {
System.out.println(colRs.getString("REMARKS");
}

虽然我正在获取所有其他数据,如列名、长度等,但绝对没问题......

最佳答案

对于 Oracle,您需要提供连接属性 remarksReporting 并将其设置为 true 或调用方法 setRemarksReporting() 以启用它。

OracleConnection oraCon = (OracleConnection)con;
oraCon.setRemarksReporting(true);

之后,getColumns()会返回ResultSet的REMARKS列中的列(或表)注释。

参见 Oracle's JDBC Reference了解更多详情


对于 SQL Server 这根本不可能。

Microsoft 和 jTDS 驱动程序均未公开表或列注释。可能是因为在 SQL Server 中没有对此的 SQL 支持。 通常使用“扩展属性”和属性名称 MS_DESCRIPTION 的方法并不可靠。主要是因为没有要求我们将 MS_DESCRIPTION 作为属性名。甚至 sp_help 都不会返回这些注释。至少 jTDS 驱动程序只需调用 sp_help 即可进入表列。我不知道 Microsoft 驱动程序是做什么的。

唯一的选择是使用 fn_listextendedproperty() 来检索评论:

例如:

SELECT objname, cast(value as varchar(8000)) as value 
FROM fn_listextendedproperty ('MS_DESCRIPTION','schema', 'dbo', 'table', 'Student', 'column', null)

您需要将 MS_DESCRIPTION 替换为您用来存储评论的任何属性名称。

关于java - JDBC获取列注释的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37612183/

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