与我们在getMetaData方法

时间:2018-03-05 19:12:57

标签: java jdbc database-metadata

我是一名新的Java程序员。我对使用getTable方法的数组感到困惑。此代码仅在我将数组保留为空时才起作用,如--String [] types = {};或者使用{“TABLE”};在...里面我尝试访问RS以外的数组,并且没有存储表名....为什么我们甚至使用这个数组并在getTable方法bcz中传递它的名字来查看我们打印rs的表名... ..我不明白这个数组的目的是用{“TABLE”}写在里面,还有什么是这个String [] types = {“TABLE”,“VIEW”};因为如果我写的字符串[] types = {“hey”,“you”};

public void getDatabaseMetaData(){
    try {

        DatabaseMetaData md = conn.getMetaData();
        String[] types = {"TABLE"};
        //OR using  String[] types = {"TABLE", "VIEW"};
        Result-set rs = md.get-tables(null, null, "%", types);
        while (rs.next()) {
            System.out.println(rs.getString("TABLE_NAME"));
        }
    } 
        catch (SQLException e) {
        e.printStackTrace();
    }
}

1 个答案:

答案 0 :(得分:1)

Java为其所有类,方法等提供了大量文档。我强烈建议您在询问Stack Overflow之前阅读它,因为它通常会回答您的问题。

DatabaseMetaData.getTables​(String catalog, String schemaPattern, String tableNamePattern, String[] types)的文档说:

  

<强>参数
  [..]
  types - 表类型列表,必须来自返回的表类型列表   getTableTypes(),包括; null返回所有类型

换句话说,types列是一个包含要包含的表类型的数组。如果我们查看DatabaseMetaData.getTableTypes(),就会说:

  

检索此数据库中可用的表类型。结果是   按表格类型排序。

     

表格类型为:

     
      
  1. TABLE_TYPE String =&gt;表格类型。典型的类型有"TABLE""VIEW""SYSTEM TABLE""GLOBAL TEMPORARY""LOCAL TEMPORARY",   "ALIAS""SYNONYM"
  2.   

换句话说,当您使用getTables(null, null, "%", types)时,types的值表示您想要返回的表类型。

例如,使用null返回所有表,只有{ "TABLE" }个'真实'用户表(但不是系统表),{ "TABLE", "VIEW" },您将获得全部真实'用户表和用户视图(驱动程序通常将类型"SYSTEM TABLE"下的系统视图分组)等。

指定{ "hey", "you" }时它不起作用的原因是因为它们不是JDBC驱动程序识别的表类型。