[英]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.