列出数据库中的表
list the tables in a database
正在尝试获取 .accdb 数据库(2007-2016 格式)中所有 table 的列表。似乎无法找到 MSysObjects table。使用 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] table。您可以通过 DatabaseMetaData#getTables
方法获取 table 的列表,例如
try (ResultSet rsMD = connChem.getMetaData().getTables(null, null, null, null)) {
while (rsMD.next()) {
String tblName = rsMD.getString("TABLE_NAME");
System.out.println(tblName);
}
}
正在尝试获取 .accdb 数据库(2007-2016 格式)中所有 table 的列表。似乎无法找到 MSysObjects table。使用 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] table。您可以通过 DatabaseMetaData#getTables
方法获取 table 的列表,例如
try (ResultSet rsMD = connChem.getMetaData().getTables(null, null, null, null)) {
while (rsMD.next()) {
String tblName = rsMD.getString("TABLE_NAME");
System.out.println(tblName);
}
}