0
我在這裏得到了一些代碼如何使用java中的sql查詢在MSAccess數據庫文件中列出所有表的名稱?
String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" + f.getPath() + ";";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn = DriverManager.getConnection(url);
Statement st=conn.createStatement();
String query="SELECT name FROM MSysObjects WHERE Type=1 AND Flags=0";
ResultSet rs=st.executeQuery(query);
ArrayList<String> tableNames=new ArrayList<String>();
while(rs.next()){
String name=rs.getString(1);
tableNames.add(name);
}
但有一些問題
[Microsoft][ODBC Microsoft Access Driver] Record(s) cannot be read; no read permission on 'MSysObjects'."
和我搜索了這個問題,剛剛發現這個:social.msdn.microsoft.com/Forums/sqlserver/en-US/…「 因爲MSysObjects是Access系統表,管理員用戶沒有權限讀取其中的數據「。 我看了答案,但實際上我想通過編程獲得權限,有人能幫助我嗎?非常感謝
非常感謝!我沒有在文章中試過答案,因爲它必須獲得用戶的許可,但不能獲得程序的許可(假設我只在程序中有文件名和路徑)。此外,我已經嘗試過你的代碼和它的工作,但有太多的表名不僅僅是我想要的名字,而且還有像'MSysAccessObjects','MSysQueries'等系統表。我怎麼解決這個問題?再次感謝。 – yao
@yao查看getTables方法的參數。傳遞非null參數可能會允許您將返回的表限制爲有趣的參數...... – wero