繁体   English   中英

如何在JDBC中获取列注释

[英]How to get Column Comments in JDBC

我想使用JDBC Metadata获取列注释,但是每次返回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 JDBC参考》


对于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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM