【发布时间】:2014-11-22 03:52:03
【问题描述】:
我的数据库中有一个名为 test2 的表。现在我想检查它是否存在于java代码中。我写了这几行代码来检查表是否存在。
DatabaseMetaData dbm = conn.getMetaData();
ResultSet rs = dbm.getTables(null, "APP", "test2", null);
if (!rs.next()) {
PreparedStatement create = conn.prepareStatement("create table test2(name2 varchar(33))");
create.executeUpdate();
}else{
System.out.println("already exists");
}
由于 test2 存在于 APP 架构中,我的 else 应该被执行。但在我的情况下,如果被执行。
【问题讨论】:
-
你为什么要查询一个你一开始就不确定是否存在的表?仅这一点就显得非常非常不寻常。
-
谁说我不确定它是否存在?它确实存在,我想检查它是否存在的代码。请仔细阅读问题。
-
@Makoto - 这对我来说很有意义。如果我们有一个可能被移动或重命名的关键表,那么您希望您的代码提及这一点。例如。期待 TBL_USERS,但未找到。您可能会发现该表已重命名为 t_customers。
-
@BoratSagdiyev:那时,开发人员没有做好他们的工作;重命名重构必须包括调整/更新表所依赖的任何现有查询。
-
@UsmanRiaz - 请告诉我们您为什么要检查代码中是否存在表。