【问题标题】:Check if there are any table in database [duplicate]检查数据库中是否有任何表[重复]
【发布时间】:2014-07-20 03:09:23
【问题描述】:

我想和这个问题的答案一样: Check if table exists 但我想检查是否存在任何表,而不仅仅是一个特定的表,而不是遍历表名,我的意思是数据库中是否有任何表。 根据API,getTables()的第三个参数,

tableNamePattern - 表名模式;必须与存储在数据库中的表名匹配

所以看起来 tableName 应该在数据库中完全匹配。有没有更好的方法来查找数据库中是否存在任何表?或者我真的必须遍历一个表名数组并调用:

getConnection().getMetaData().getTables(null, null, "table", null).next();

每次迭代?

【问题讨论】:

  • 您提供的链接中的答案(选择的那个)有您的要求。 meta.getTables(null, null, null, new String[] "TABLE"}); 然后你就遍历它。
  • @JorgeCampos 其实第三个参数应该是"%"。 JDBC 不完全清楚 null 是否应该为此参数工作,如果为该参数指定 null,则某些驱动程序将无法工作。
  • 您链接到的问题中接受的答案将返回所有表格(至少:在某些驱动程序中,但不是所有驱动程序,否则请参阅我之前的评论)。
  • @MarkRotteveel 听起来您需要将您的评论添加到您建议的副本的已接受答案中。

标签: java sql sql-server database jdbc


【解决方案1】:

可以通过查询表INFORMATION_SCHEMA.TABLES来判断是否存在表:

select *
from INFORMATION_SCHEMA.TABLES;

如果要查找名称中的特定模式,可以添加where 子句:

WHERE table_name like YOURPATTERNHERE

【讨论】:

    【解决方案2】:

    为了更加恭维,请像这样使用 IF EXISTS():

    如果存在(从 INFORMATION_SCHEMA.TABLES 中选择 * WHERE TABLE_NAME LIKE '%MY TABLE%') 开始 --在这里做点什么 结尾

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-11
      • 1970-01-01
      • 1970-01-01
      • 2018-01-28
      • 1970-01-01
      • 2018-03-05
      • 2014-07-16
      相关资源
      最近更新 更多