列出数据库中的表

2023-12-04

尝试获取 .accdb 数据库中所有表的列表(2007-2016 格式)。似乎找不到 MSysObjects 表。使用 UCanAccess

sql = "SELECT Name FROM MSysObjects WHERE Type = 1 AND Flags = 0";
ResultSet rs = queryChem(sql);

public static ResultSet queryChem(String sql) throws SQLException {
    Statement sChem = connChem.createStatement();
    ResultSet rsChem = sChem.executeQuery(sql);
    return rsChem;
}

private static void connectChem() {
    try {

        Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
        System.out.println("Driver loaded");

        String url = "jdbc:ucanaccess://chemdb.accdb";
        connChem = DriverManager.getConnection(url);
        System.out.println("Database Connected - CHEMS");

    } catch (Exception ex) {
        System.out.println("Error");
    }
}

net.ucanaccess.jdbc.UcanaccessSQLException:UCAExc:::3.0.6 用户缺乏权限或未找到对象:MSYSOBJECTS 在net.ucanaccess.jdbc.UcanaccessStatement.executeQuery(UcanaccessStatement.java:211)


您不需要点击 [MSysObjects] 表。您可以通过以下方式获取表格列表DatabaseMetaData#getTables方法,例如

try (ResultSet rsMD = connChem.getMetaData().getTables(null, null, null, null)) {
    while (rsMD.next()) {
        String tblName = rsMD.getString("TABLE_NAME");
        System.out.println(tblName);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

列出数据库中的表 的相关文章

随机推荐