簡體   English   中英

JDBC-從OpenOffice數據庫獲取所有表名

[英]JDBC - Get all Table names from OpenOffice Database

長時間潛伏,第一個提問時間。

我嘗試搜索如何從使用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

返回了什么,我該如何解決或解決此問題? 先感謝您!

編輯:默認情況下,由OpenOffice創建的數據庫似乎是嵌入式數據庫。 這可能是導致問題的原因。 嘗試將其轉換為其他內容,然后看看會發生什么。

我發現了一種解決此問題的方法,以防其他人也遇到此問題。 問題是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_ *表的怪異之處,但是現在我實際上也在獲取我想要的表。 從那里我想我可以弄清楚如何獲取那些隨機表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM