Java 与getMetaData方法中不使用的数组混淆

Java 与getMetaData方法中不使用的数组混淆,java,jdbc,database-metadata,Java,Jdbc,Database Metadata,我是一名新的Java程序员。我对使用带有getTable方法的数组感到困惑。只有当我将数组留空,如--String[]types={}时,此代码才有效;或使用{“表”};在…内我尝试访问RS之外的数组,但其中没有存储表名。。。。为什么我们甚至使用这个数组并在getTable方法bcz中传递它的名称来查看我们打印rs的表名。。。。我不明白这个写有{“TABLE”}的数组的用途,也不明白这个字符串是什么[]类型={“TABLE”,“VIEW”};对于如果我像String[]types={“嘿”,“你

我是一名新的Java程序员。我对使用带有getTable方法的数组感到困惑。只有当我将数组留空,如--String[]types={}时,此代码才有效;或使用{“表”};在…内我尝试访问RS之外的数组,但其中没有存储表名。。。。为什么我们甚至使用这个数组并在getTable方法bcz中传递它的名称来查看我们打印rs的表名。。。。我不明白这个写有{“TABLE”}的数组的用途,也不明白这个字符串是什么[]类型={“TABLE”,“VIEW”};对于如果我像String[]types={“嘿”,“你”}那样写,为什么不起作用


Java对其所有类、方法等都有丰富的文档。我强烈建议您在询问堆栈溢出问题之前阅读它,因为它通常会回答您的问题

文件说明:

参数
[…]
types
-表类型列表,必须来自从返回的表类型列表 ,包括:;null返回所有类型

换句话说,
types
列是一个包含表类型的数组。如果我们看一下,它说:

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

表格类型为:

  • 表格类型
    String=>表格类型。典型类型有
    “表”
    “视图”
    “系统表”
    “全局临时”
    “本地临时”
    “别名”
    “同义词”
  • 换句话说,当您使用
    getTables(null,null,“%”,types)
    时,
    types
    的值指示要返回哪些类型的表

    例如,使用
    null
    返回所有表,使用
    {“TABLE”}
    仅返回“real”用户表(而不是系统表),使用
    {“TABLE”,“VIEW”}
    ,您将获得所有“real”用户表和用户视图(驱动程序通常将系统视图分组在
    类型“system TABLE”
    下),等等


    当您指定
    {“嘿”,“you”}
    时,它不起作用的原因是这些表类型不能被JDBC驱动程序识别。

    这显然不是您实际运行的代码-Java中不允许使用类型名称和变量中的连字符。另外,最重要的是:您是否查阅了您尝试使用的API的文档?它可以在互联网上公开获取。
    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();
        }
    }