簡體   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