2014-07-23 56 views
1

長時間潛伏者,第一個問題時間。JDBC - 從OpenOffice數據庫獲取所有表名稱

我試着搜索如何從使用JDBC創建的OpenOffice創建的數據庫中獲取所有表,並且雖然我找到了適用於其他人的答案,但它們不適用於我。代碼本身實際上會返回一些內容,但它會返回一些完全意外的結果

我的代碼:

try { 
     DatabaseMetaData md = conn.getMetaData(); 
     rs = md.getTables(null, null, "%", null); 

     while (rs.next()) { 
      tableNames.add(rs.getString(3)); 
      System.out.println(rs.getString(3)); 
     } 

    } 
    catch (Exception e) { 
     System.out.println("error in sendConnection()"); 
    } 

和輸出:

SYSTEM_ALIASES 
SYSTEM_ALLTYPEINFO 
SYSTEM_AUTHORIZATIONS 
SYSTEM_BESTROWIDENTIFIER 
SYSTEM_CACHEINFO 
SYSTEM_CATALOGS 
SYSTEM_CHECK_COLUMN_USAGE 
SYSTEM_CHECK_CONSTRAINTS 
SYSTEM_CHECK_ROUTINE_USAGE 
SYSTEM_CHECK_TABLE_USAGE 
SYSTEM_CLASSPRIVILEGES 
SYSTEM_COLLATIONS 
SYSTEM_COLUMNPRIVILEGES 
SYSTEM_COLUMNS 
SYSTEM_CROSSREFERENCE 
SYSTEM_INDEXINFO 
SYSTEM_PRIMARYKEYS 
SYSTEM_PROCEDURECOLUMNS 
SYSTEM_PROCEDURES 
SYSTEM_PROPERTIES 
SYSTEM_ROLE_AUTHORIZATION_DESCRIPTORS 
SYSTEM_SCHEMAS 
SYSTEM_SCHEMATA 
SYSTEM_SEQUENCES 
SYSTEM_SESSIONINFO 
SYSTEM_SESSIONS 
SYSTEM_SUPERTABLES 
SYSTEM_SUPERTYPES 
SYSTEM_TABLEPRIVILEGES 
SYSTEM_TABLES 
SYSTEM_TABLETYPES 
SYSTEM_TABLE_CONSTRAINTS 
SYSTEM_TEXTTABLES 
SYSTEM_TRIGGERCOLUMNS 
SYSTEM_TRIGGERS 
SYSTEM_TYPEINFO 
SYSTEM_UDTATTRIBUTES 
SYSTEM_UDTS 
SYSTEM_USAGE_PRIVILEGES 
SYSTEM_USERS 
SYSTEM_VERSIONCOLUMNS 
SYSTEM_VIEWS 
SYSTEM_VIEW_COLUMN_USAGE 
SYSTEM_VIEW_ROUTINE_USAGE 
SYSTEM_VIEW_TABLE_USAGE 

被返回是什麼,以及如何我可以解決或解決呢?先謝謝你!

編輯:創建的數據庫buh OpenOffice默認情況下顯示爲嵌入式數據庫。這可能會導致問題。試着將它轉換成其他東西,看看會發生什麼。

+0

看起來像是獲得表的「系統」模式(或其他) – Leo

回答

1

我找到了解決這個問題的方法,以防其他人遇到此問題。問題在於OpenOffice將數據庫保存爲基本文件,其中包含hsqldb。你需要把它做成一個普通的hsqldb。

我用這兩個環節的資源:

http://programmaremobile.blogspot.com/2009/01/java-and-openoffice-base-db-through.html

https://forum.openoffice.org/en/forum/viewtopic.php?f=83&t=65980

總之,你需要提取.odb文件,進入目錄,找到持有4數據庫目錄其他文件。給他們添加一個前綴,然後像正常一樣訪問它。

我仍然得到SYSTEM_的怪物*表,但現在我卻越來越想和表。從那裏我想我可以弄清楚如何得到這些隨機表。

相關問題