2013-09-28 25 views
1

我正在嘗試這種方法:How can I get table names from an MS Access Database?等,但它什麼也沒做。此外,發生錯誤說我沒有閱讀MSYSOBJECTS的權限。使用Java從Access 2.0女士獲取表名列表

通過使用Java,如何從Access 2.0女士獲取表名列表?

我需要這個,因爲我不允許他們改變數據庫格式和版本本身。

+1

每個數據庫都有點不同,但看看[這個例子](http://stackoverflow.com/questions/2780284/how-to-get-all- table-names-from-a-database)以及可能的[這個例子](http://stackoverflow.com/questions/9288966/delete-table-if-exists-in-microsoft-access/9289395#9289395)。 .. – MadProgrammer

+2

請複製並粘貼您的工作代碼以創建此問題的答案。 (關於堆棧溢出,用戶回答他/她自己的問題是完全可以接受的。) –

+0

好的,我已經修復了它。放置Class.forName和DriverManager時出錯。它應該抓住試試看 – poring91

回答

2

從MadProgrammer的評論信息(非常感謝),終於找到了解決方案。所以我使用這段代碼

Connection conn; 
String fileName = "C:/folder/AccessDB.mdb"; 
String dbString = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+fileName+";"; 

try { 
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
    conn = DriverManager.getConnection(dbString, "", ""); 
    DatabaseMetaData md = conn.getMetaData(); 
    ResultSet rs = md.getTables(null, null, "%", null); 
    String temp; 
    while (rs.next()) { 
     temp = rs.getString(3); 
     if(!temp.contains("MSys")) { 
      System.out.println(temp); 
     } 
    } 
} 
catch(ClassNotFoundException|SQLException e) { 
    e.printStackTrace(); 
}