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