我正在尝试使用 DatabaseMetaData
类似于rdbms。
示例代码:
try (Connection con = getJdbcConnection(connectionUri, driverName, username, password);) {
DatabaseMetaData metadata = con.getMetaData();
ResultSet rs = metadata.getTables(null, null, tableName, null);
while (rs.next()) {
System.out.println(rs.getString(3));
}
} catch (SQLException e) {
}
private static void registerDriver(String driverName) {
try {
Class.forName(driverName);
} catch (ClassNotFoundException e) {
LOG.error("No class found for " + driverName + ". Details: " + e);
}
}
private static Connection getJdbcConnection(String connectionUri, String driverName, String username,
String password) throws SQLException{
registerDriver(driverName);
return DriverManager.getConnection(connectionUri, username,password);
}
特定数据库中没有表。使用不同的表名,我得到不同的输出。
例如:
我把表名 emp
,共有3条记录 emp
我把表名 employee
,共有5条记录 employee
我把表名 emp12
,它没有返回任何记录(这是预期的)
我做错什么了吗?
我不应该用吗 DatabaseMetaData
检查表是否存在?
1条答案
按热度按时间pxy2qtax1#
我需要传入架构名称
getTables
方法签名:
我通过了以下考试:
catalog=null;
schemapattern=配置单元架构名称
tablenamepattern=配置单元表名称
类型=
new String[] { "TABLE" }
示例代码: