2013-10-17 46 views

回答

1

如這裏Information about getTableName()說:

嗨。對不起,壞消息的傳遞者,但是Oracle的DBMS不會發送關於哪一列是從哪個表來的信息,所以oracle 驅動程序將永遠無法實現該結果集元數據調用。 大多數數據庫管理系統都不會,所以你會看到所有JDBC驅動程序中的99%也不會執行那個調用來返回任何有用的東西。 只有Sybase擁有最新的驅動程序和特定的可選 DBMS配置。大部分數據庫管理系統供應商永遠都不會去做DBMS的改變。

編輯:我嘗試下面的方法來設置參數:

java.util.Properties info = new java.util.Properties(); 
info.put ("user", "scott"); 
info.put ("password", "tiger"); 
info.put ("ResultSetMetaDataOptions", "1"); 

Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@myhost:1521:orcl", info); 

但是,它沒有工作 - 我仍然無法獲得表名。此屬性不在您可以在此查看的可能屬性列表中:Driver documentation。我也無法找到任何其他方式來設置該屬性並使其正常工作。

+0

當ResultSetMetaDataOptions屬性設置爲1並且調用ResultSetMetaData.getTableName()方法時,Oracle驅動程序返回的表名信息取決於結果集中的列是否映射到表中的列數據庫。對於結果集中映射到數據庫中的表中的列的每列,Oracle驅動程序返回與該列關聯的表名稱。對於不映射到表中列的結果集中的列(例如,聚合和文字),Oracle驅動程序返回一個空字符串。 –

+0

我只想知道如何設置此信息ResultSetMetaDataOptions?!! –

+0

@KrithikaVittal我無法通過將此屬性設置爲1來獲取表名。 –